に参加し、次のモデルを考えてみましょう:私はに似たクエリを実行するとDjangoのモデルの値() 'とLEFT OUTERは
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ジョインの代わりに使用していますINNERは参加します。 filter
ではINNER JOINを使用しています。 values()
を使用して、LEFT OUTER結合によって誘導される不要なNULLフィールドフィルタリングを回避するにはどうすればよいですか?
filter()/values()
機能の動作に違いがあるのはなぜですか?
Product.objects.all()を使用するとどうなりますか?select_related()? – fabrizioM
残念ながら 'select_related()'は逆の関係をカバーしていません – Xyand