0
我有以下型號:保存使用第二級相關領域的PK模型在Django
class A(models.Model):
pass # omitted for shortness
class B(models.Model):
pass
class AB(models.Model):
prop_a = models.ForeignKey('A')
prop_b = models.ForeignKey('B')
class X(models.Model):
prop_ab = models.ForeignKey('AB')
我要救實例X
的模式,但沒有做ab = AB.objects.get(prop_a=1, prop_b=2)
然後x.prop_ab = ab
。
我想是這樣的(假設所有在A
適當的條目,B
和AB
已經存在):
x = X()
x.prop_ab__prop_a__id = 1
x.prop_ab__prop_b__id = 2
x.save()
是這樣的可能嗎? (上面的語法是不行的,我試過)
的
get
你能解釋一下你正在努力實現這個東西,以儘量減少查詢我的號碼嗎? –我需要在foreach循環中做一堆'X'模型的'save()',所以我還需要在那個foreach中獲得'AB'條目。我想通過消除'AB'上的'get'來減少查詢次數。 –
Afaik這是不可能的,類X需要類AB的PK,所以你必須做查詢查找來確定PK。但是,如果您已經知道PK,那麼您可以簡單地執行x.prop_ab_id = 1.但是您必須考慮您嘗試實現的優化可能不是非常有用,因爲插入/更新操作比選擇查詢要重得多。 – Peter