A2maridz
A2maridz

Reputation: 341

(Django) filter displayed objects using the generic ListView

I want to use the generic django ListView to display all the posts of the logged user through this url:

#/users/myposts/
url(r'^myposts/', views.MyPostsView.as_view(), name='myposts'),

My Post model is as following:

class Post(models.Model):
   person = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
   domain = models.ForeignKey(Domain, on_delete=models.CASCADE)
   speciality = models.ForeignKey(Speciality, on_delete=models.CASCADE)
   level = models.ManyToManyField(Level)
   date_post = models.DateTimeField()
   title = models.CharField(max_length=200)
   description = models.CharField(max_length=1000)
   is_deleted = models.BooleanField(default=False)
   date_delete = models.DateTimeField(null=True)

and my generic ListView is:

class MyPostsView(generic.ListView):
     template_name = 'posts_list.html'
     userId = None

     def get_queryset(self):
         return Post.objects.get(person=self.request.user.id)

doing this i get the following error message

get() returned more than one Post -- it returned 2

but when I return Post.objects.all() it returns all the posts and displays them

Upvotes: 0

Views: 341

Answers (1)

Spider
Spider

Reputation: 96

Use objects.filter instead of objects.get.

Upvotes: 1

Related Questions