考慮以下型號:Django模型'值()和LEFT OUTER JOIN
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代替內部聯接。使用filter
時使用INNER JOIN。如何使用values()
並避免由LEFT OUTER連接引起的不必要的NULL字段過濾?
爲什麼filter()/values()
函數的行爲有差異?
如果使用Product.objects.all()。select_related()會怎麼樣? – fabrizioM
不幸的是,'select_related()'不包括反向關係 – Xyand