2011-06-06 95 views
0

我希望能夠同時將兩個記錄保存在兩個數據庫表中,其中一個表與另一個表具有外鍵關係。Django - 使用外鍵關係同時保存兩條記錄

models.py

class Model1(models.Model): 
    Modlel1Filed1 = models.CharField() 

class Model2 (models.Model): 
    Model2Filed1 = models.ForeignKey(Model1) 
    Modle2Field2 = models.CharField() 

下面是我如何保存數據使用型號1:

p = Model1.objects.create(Model1Filed1=some_data_here) 
p.save() 

對於模型2我想:

p = Model1.objects.get(pk=p.pk) 
f = Model2.objects.create(Model2Filed1=p.id, Modle2Field2=some_data) 
f = save() 

,但我得到一個錯誤像這樣:

Cannot assign "78": "Model2.Model2Filed1" must be a "Model1" instance. 

任何ides?

回答

2

的錯誤信息是很清楚的:"Model2.Model2Filed1" must be a "Model1" instance

f = Model2.objects.create(Model2Filed1=p, Modle2Field2=some_data) 

改變Model2Filed1=p.idModel2Filed1=p

+1

+1 - 還我不認爲你需要Model1.objects.get(PK = p.pk),如你剛創建它,p已經=模型實例。 – JamesO 2011-06-06 20:29:12

+0

@JamesO我剛剛意識到,所以我把這條線關掉了。謝謝! – avatar 2011-06-06 20:41:18