Django得到了不值得注意的东西

2024-10-04 05:25:58 发布

您现在位置:Python中文网/ 问答频道 /正文

class Photo(models.Model):
    ...    
    viewsT = models.ManyToManyField('PhotoViewT', symmetrical=False)
    ...

class PhotoViewT(models.Model):
    user = models.ForeignKey(User)
    creationdate = models.DateTimeField()

我在“Photo”表中存储照片信息,在“PhotoViewT”表中存储有关视图的信息(这里是观看照片的“用户”和观看照片时的“创建日期”)。在“photo”中,我将m2m字段添加到视图中,在其中添加有关所有视图的信息

我的任务是获取照片,这些照片还没有被当前定义的用户看到。我不知道如何提出这个问题

像这样的

Photo.objects.filter(viewsT__user__doesnt_contain=targetUser)

上面的表达很难奏效。有什么解决办法吗?提前谢谢


Tags: 用户视图信息falsemodelmodels照片class
3条回答

Photo.photoviewtset.all()将获取与该Photo关联的所有PhotoViewT实例

Photo.photoviewtset.filter(user=<your_current_user)将获取与您的current_user筛选的Photo关联的所有PhotoViewT实例

注意:对于这种情况,不需要Photo模型中的ManyToManyField

 Photo.objects.exclude(viewsT__in=PhotoViewT.objects.filter(user=request.user))

 OR

 Photo.objects.filter(~Q(viewsT__in=PhotoViewT.objects.filter(user=request.user)))

参考the doc。试试看

Photo.objects.exclude(viewsT__user=targetUser)

相关问题 更多 >