gpt4 book ai didi

python - Django 模型 'values()' 和 LEFT OUTER 连接

转载 作者:太空宇宙 更新时间:2023-11-03 19:27:58 26 4
gpt4 key购买 nike

考虑以下模型:

class Product(models.Model):
name = models.CharField(max_length=100, blank=False, null=False)

class Provider(models.Model):
name = models.CharField(max_length=100, blank=False, null=False)
product = models.ForeignKey(Product)

class Customer(models.Model):
name = models.CharField(max_length=100, blank=False, null=False)
product = models.ForeignKey(Product)

当我执行类似于以下的查询时:

Product.objects.values('name', 'provider__name', 'customer__name')

生成的 SQL 使用 LEFT OUTER join 而不是 INNER join。使用 filter 时使用 INNER JOIN。如何使用 values() 并避免 LEFT OUTER 连接引起的不必要的 NULL 字段过滤?

为什么 filter()/values() 函数的行为存在差异?

最佳答案

您可以在值后面使用过滤器,如下所示:

Product.objects.values('name', 'provider__name', 'customer__name').filter(provider__name__isnull=False)

我不是100%确定,但尝试一下!让我知道!

关于python - Django 模型 'values()' 和 LEFT OUTER 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7366049/

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