gpt4 book ai didi

sql - 带有 "isnull"参数的 Django 查询集返回重复项

转载 作者:行者123 更新时间:2023-12-04 15:54:48 25 4
gpt4 key购买 nike

我只想返回没有关联图像的项目。我的关系是这样的:

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)

我将以下查询放在一起以返回 Photo 不为空的 Post 实例:
    posts=Post.objects.filter(photo__photo__isnull=False)

问题是它根据与 Post 实例相关的 Photo 实例的数量返回每个 Post 实例的多个副本。换句话说,一篇文章有​​ 5 张照片,因此它在查询集中返回 5 个副本。我查看了文档,这有点棘手。我最终使用了 distinct(),但我认为我可以让它立即工作。

谢谢

最佳答案

要返回没有关联照片的帖子,请使用以下查询:

posts=Post.objects.filter(photo__isnull=True)

稍后在您的问题中您正在使用 isnull=False .正如您所说,结果查询集将为附加到它的每张照片返回一次每个帖子。要在查询集中只包含每个帖子一次,请使用 distinct。
posts=Post.objects.filter(photo__isnull=False).distinct()

我不知道你为什么要查询 photo__photo__isnull在你的查询中——我的回答假设你应该使用 photo__isnull .

关于sql - 带有 "isnull"参数的 Django 查询集返回重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5924250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com