我有一个像这样的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)
我试图跟踪帖子,以及哪些用户看过哪些帖子。如何检索给定用户未看到的所有帖子?
答案 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)
如果您使用中间件,user
是django.contrib.auth.models.User
对象,可能是request.user
。
seen__user
字符串沿着forignKey
和Post
之间的Seen
向后遍历,然后沿foreignKey
之间的Seen
前进User
{1}}。