2010-11-16 85 views
33

嗨 假設我有這樣一個簡單的模型類:與外鍵創建的Django模型對象

class TestModel(models.Model): 
    testkey = models.ForeignKey(TestModel2) 
    ... 

當我創建一個TestModel對象我要傳遞給它的TestModel2對象的實例來創建它:

testkey =TestModel2.objects.get(id=...) 
TestModel.objects.create(testkey=testkey) 

這導致2查詢數據庫我想,我有一個外鍵ID列表,我需要創建對象。

是否可以使用外鍵創建對象,而無需最初檢索外鍵對象?

+0

的可能的複製[Django的:設置外鍵使用整數(http://stackoverflow.com/questions/2846029/django-set-foreign-key - 使用整數) – 2016-05-25 15:05:08

回答

48

什麼你是後:

TestModel.objects.create(testkey_id=1) 
+1

是的,你是對的,但由於某種原因它不適用於get_or_create :( – dragoon 2010-11-16 15:01:22

+0

@dragon:我相信TestModel2.objects.get(testkey_id = 1)也不起作用 – 2010-11-16 20:30:16

+7

@Tomasz不,這是行不通的,但是'TestModel2.objects.get(testkey__id = 1)'和'TestModel2.objects.get_or_create(testkey__id = 1)'將會工作(注意雙下劃線)。將會引發'MultipleObjectsReturned'。 – sneeu 2010-11-16 22:19:09