0
DjangoのORMには、関連するテーブルを結合するためのselect_related()
というメソッドがあります。すべての列を含めずにDjangoに関連する列を含める方法
ただし、含まれているフィールドが別のモデルの外部キーである場合、デフォルトの動作では、関連するモデルのすべての列が含まれているようです。例えば
、私はモデルがある場合:
class A(models.Model):
field1 = models.CharField(...)
field2 = models.CharField(...)
class B(models.Model):
field1 = models.CharField(...)
field2 = models.ForeignKey(A)
print str(B.objects.all().select_related('field2').query))
出力:
SELECT myapp_b.id, myapp_b.field1, myapp_b.field2_id, myapp_a.id, myapp_a.field1, myapp_a.field2 FROM ...
が、私は唯一のA
からではないすべてのフィールドA.field1
を含むようにしたいので、私がやってみました:
print str(B.objects.all().select_related('b__field1').query))
しかし、これは全く同じクエリを出力します。
select_related()
に記載されている外部キーフィールドのすべてのフィールドをDjangoに含めないようにするにはどうすればよいですか?
私は似たものをしようとしたが、私は完全なフィールド名を使用していたため、エラーを得ていたがそれぞれにトリックは、フィールド名の両方のセットが重複しないようにすることです。 – Cerin