2013-03-09 51 views
0
class Photo(models.Model): 
    ...  
    viewsT = models.ManyToManyField('PhotoViewT', symmetrical=False) 
    ... 

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

我在“照片”表中存储照片的信息,并在“PhotoViewT”表格中存储照片的相关信息(这里是观看照片时的“用户”和观看照片时的“creationdate”)。在“照片”我有m2m字段的意见,我添加有关所有意见的信息。django获取未观看项目

我的任务是获取照片,这些照片还没有被当前定义的用户观看过。我不知道如何制作这个查询。

喜欢的东西

Photo.objects.filter(viewsT__user__doesnt_contain=targetUser) 

表达上面几乎没有做的工作。任何解决方案先谢谢你!

回答

1

参考the doc。尝试

Photo.objects.exclude(viewsT__user=targetUser) 
+0

就是这样!谢谢! – Could 2013-03-09 18:33:51

0

Photo.photoviewtset.all()将取回所有与Photo相关的PhotoViewT实例。

Photo.photoviewtset.filter(user=<your_current_user)将取回所有PhotoViewT实例Photo通过您的current_user过滤。

注意:您不需要ManyToManyField在Photo模型这个

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

OR 

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