Ben*_*Ben 4 sql django django-models django-queryset
我想只返回没有相关图像的项目.我的关系是这样的:
class Post(models.Model):
....fields
class Photo(models.Model):
post=models.ForeignKey(Post,blank=True,null=True)
photo=models.FileField(upload_to="pics")
def __unicode__(self):
return str(self.post)
Run Code Online (Sandbox Code Playgroud)
我把以下查询放在一起以返回Photo不为null的Post实例:
posts=Post.objects.filter(photo__photo__isnull=False)
Run Code Online (Sandbox Code Playgroud)
问题是,它根据与Post实例相关的Photo实例的数量返回每个Post实例的多个副本.换句话说,一个帖子有5张照片,因此在查询集中返回五个副本.我查看了文档,这有点棘手.我最终使用distinct(),但我认为我可以立即使用它.
谢谢
要返回没有关联照片的帖子,请使用以下查询:
posts=Post.objects.filter(photo__isnull=True)
Run Code Online (Sandbox Code Playgroud)
您正在使用的问题中稍后isnull=False.正如您所说,生成的查询集将为每个附加到它的照片返回一次.要仅在查询集中包含每个帖子一次,请使用distinct.
posts=Post.objects.filter(photo__isnull=False).distinct()
Run Code Online (Sandbox Code Playgroud)
我不确定你为什么查询photo__photo__isnull你的查询 - 我的答案假设你应该使用photo__isnull.
| 归档时间: |
|
| 查看次数: |
1906 次 |
| 最近记录: |