Django:检索用户的所有看不见的帖子

时间:2013-11-11 20:19:37

标签: python django django-models

我有一个像这样的Django数据模型:

class Post(django.db.models.Model):
    text = django.db.models.CharField()

class Seen(django.db.models.Model):
    post = django.db.models.ForeignKey(Post)
    user = django.db.models.ForeignKey(django.contrib.auth.models.User)

我试图跟踪帖子,以及哪些用户看过哪些帖子。如何检索给定用户未看到的所有帖子?

2 个答案:

答案 0 :(得分:0)

请考虑以下事项:

seen = Seen.objects.select_related('post').filter(user=request.user)
if post not in [x.post for x in seen]:
    #do what you need

请注意,'select_related'只是一个表现助推器。

答案 1 :(得分:0)

使用exclude:

unseen_posts = Post.objects.exclude(seen__user=user)

如果您使用中间件,userdjango.contrib.auth.models.User对象,可能是request.user

seen__user字符串沿着forignKeyPost之间的Seen向后遍历,然后沿foreignKey之间的Seen前进User {1}}。