django获取未被监视的项目


class Photo(models.Model):
    ...    
    viewsT = models.ManyToManyField('PhotoViewT', symmetrical=False)
    ...
class PhotoViewT(models.Model):
    user = models.ForeignKey(User)
    creationdate = models.DateTimeField()

我将照片信息存储在"Photo"表中,将视图信息存储在"PhotoViewT"表中(这里是观看照片的"user"和观看照片时的"creationdate")。在"photo"上,我有m2m字段到视图,在那里我添加有关所有视图的信息。

我的任务是获取尚未被当前定义的用户观看的照片。我不知道如何编写这个查询。

之类的
Photo.objects.filter(viewsT__user__doesnt_contain=targetUser)
上面的

表达式几乎不起作用。有解决方案吗?提前感谢!

引用文档。试着

Photo.objects.exclude(viewsT__user=targetUser)

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)))

相关内容

  • 没有找到相关文章

最新更新