我有3個模型temp1,temp2,temp3其中temp1和temp2有外鍵到temp3.id。這意味着temp1和temp2通過temp3.id關聯。通過另一個模型加入2個模型,他們有一個外鍵
Class temp1(models.Model):
temp3 = models.ForeignKey('temp3', verbose_name=u"temp3", null=True, blank=True)
i_y = models.IntegerField('i_Y',null=True, blank=True)
iq = models.FloatField('IQ', null=True, blank=True)
class temp2(models.Model):
temp3 = models.ForeignKey('temp3', verbose_name=u"temp3", null=True, blank=True)
q_y = models.IntegerField('Y', null=True, blank=True)
eq = models.IntegerField('EQ', null=True, blank=True)
q_c = models.CharField('category', max_length=1000, null=True, blank=True)
class temp3(models.Model):
title = models.CharField(_('Title'), max_length=400, null=True, blank=True)
我如何使用django ORM對temp1和temp2模型進行全外連接? 事實上,我想要做一個SQL查詢這樣的Django的ORM:
select temp3.title, temp1.i_y, temp1.iq, temp2.eq,temp2.q_c, temp2.q_y from (select temp1.i_y, temp1.iq, temp1.temp3_id AS first_table_id,temp2.temp3_id AS second_table_id,temp2.eq, temp2.q_c, temp2.q_y from temp1 full outer join temp2 on (temp1.temp3_id = temp2.temp3_id AND temp1.i_y = temp2.q_y)) AS t left outer join temp3 (t.first_table_id = temp3.id OR t.second_table_id = temp3.id)
我應該指出,對於TEMP3的每一行,有對db temp1目錄和TEMP2車型多行,我的目標是獲取所有的行這是由連接條件滿足
爲什麼不使用ManyToManyFields與參數。這會更容易使用,因爲django默認在其ORM中提供了很多查詢集https://docs.djangoproject.com/en/1.11/topics/db/examples/many_to_many/ –