Reputation: 155
I'm struggling to understand how to format queries in views - especially in regards to the current logged in user. I would like to display all books whose user_added value matches the current logged in user's ID.
models.py
class books(models.Model):
user_added = models.ForeignKey(User, default='1', on_delete=models.CASCADE)
title = models.CharField(max_length=100)
i'm using Django's Users model and functionality
forms.py
class books_list(forms.ModelForm):
class Meta:
model = books
fields = ['user_added', 'title']
views.py
class booksListView(ListView):
def get_queryset(self):
# id = ?
Upvotes: 2
Views: 1080
Reputation: 476594
You can filter user_added
with self.request.user
:
from django.contrib.auth.mixins import LoginRequiredMixin
class booksListView(LoginRequiredMixin, ListView):
def get_queryset(self):
return books.objects.filter(user_added=self.request.user)
Note: You can limit views to a class-based view to authenticated users with the
LoginRequiredMixin
mixin [Django-doc].
Upvotes: 2