Game Analysis
Game Analysis

Reputation: 155

Django - query all records matching current logged in user

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

Answers (1)

willeM_ Van Onsem
willeM_ Van Onsem

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

Related Questions