0

我有一个这样的 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)

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

4

2 回答 2

0

使用排除:

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

如果您使用的是中间件,user对象django.contrib.auth.models.User可能在哪里。request.user

seen__user字符串沿着forignKeybetween Postand向后遍历,Seen然后沿着foreignKeybetween Seenand向前遍历User

于 2013-11-11T21:05:45.813 回答
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”在这里只是一个性能助推器。

于 2013-11-11T20:22:34.557 回答