Djnagoモデル:
class RootTable(models.Model):
id = models.IntegerField(primary_key=True)
field1 = models.CharField(max_length=100, unique=True)
field2 = models.CharField(max_length=120, unique=True)
class SubTableA(models.Model):
id = models.IntegerField(primary_key=True)
field1 = models.ForeignKey(RootTable, null=True, blank=True)
subtableAfield1 = models.CharField(max_length=180, blank=True)
class SubTableB(models.Model):
id = models.IntegerField(primary_key=True)
field1 = models.ForeignKey(SubTableA, null=True, blank=True)
subtableBfield1 = models.CharField(max_length=180, blank=True)
class SubTable2(models.Model):
id = models.IntegerField(primary_key=True)
field1 = models.ForeignKey(RootTable, null=True, blank=True)
subtable2field1 = models.CharField(max_length=180, blank=True)
subtable2field2 = models.CharField(max_length=180, blank=True)
このようなリクエストを使用する場合:
RootTable.objects.filter( subtable2__subtable2field1 = 'text' )
'RootTable'からのみ値を返します。
SQL:
SELECT 'roottable'.'id',
'roottable'.'field1',
'roottable'.'field2',
FROM 'roottable'
INNER JOIN ...
しかし、他のテーブルからすべての接続された値を取得するにはどうすればよいですか?
SQL:
SELECT 'roottable'.'id',
'roottable'.'field1',
'roottable'.'field2',
'subtablea'.'subtableafield1',
'subtableb'.'subtablebfield1',
'subtable2'.'subtable2field1',
'subtable2'.'subtable2field2',
FROM 'roottable', 'subtablea', 'subtableb', 'subtable2'
INNER JOIN ...
更新:
次のような応答があります。
[
{ 'roottable.id' : 'rid'},
{ 'subtablea.id' : 'id'},
{ 'subtablea.subtableafield1' : 'value1' },
...
{ 'roottable.id' : 'rid'},
{ 'subtablea.id' : 'id'},
{ 'subtablea.subtableafield1' : 'value2' },
]
しかし、私はこのようなものが必要です:
[
{ 'roottable.id' : 'rid'},
{ 'subtablea.id' : 'id'},
{ 'subtablea.subtableafield1' : ['value1','value2'] },
]
そのような構造を取得するための迅速な方法はありますか?