gpt4 book ai didi

python - 基于列表过滤查询集,包括 None

转载 作者:行者123 更新时间:2023-11-29 15:02:57 28 4
gpt4 key购买 nike

我不知道这是一个 django bug 还是一个功能,但我对 MySQL 有一个奇怪的 ORM 行为。

class Status(models.Model):
name = models.CharField(max_length = 50)

class Article(models.Model)
status = models.ForeignKey(status, blank = True, null=True)


filters = Q(status__in =[0, 1,2] ) | Q(status=None)
items = Article.objects.filter(filters)

这会返回文章项目,但有些项目的状态与请求的状态不同 [0,1,2,None]

查看sql查询:

SELECT [..] FROM `app_article` LEFT OUTER JOIN `app_status` ON (`app_article`.`status_id` = `app_status`.`id`) WHERE (`app_article`.`status_id` IN (1, 2) OR `app_status`.`id` IS NULL) ORDER BY [...]

OR app_status.id IS NULL 部分似乎是原因。如果我将其更改为 OR app_article.status_id IS NULL 它可以正常工作。

如何处理这个问题?

谢谢。

最佳答案

尝试使用此查询:

filters = Q(status__in =[0, 1,2] ) | Q(status__isnull=True) 

关于python - 基于列表过滤查询集,包括 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2717282/

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