2014-02-10 81 views
3

我正在研究一個應用程序,在這個應用程序中我有兩個模型用於這個問題的目的,我們稱他們爲A和B.我想要另一個模型,我'連接'A和B只是爲了使我很容易找到B中涉及到A的實例所以我想出了:Django onetoonefield沒有保存實例

class ABLink(models.Model): 
    a = models.OneToOneField(A, null=True) 
    b = models.OneToOneField(B, null=True) 

我使用Django的post_save信號模型A做鏈接:

mashup, cr = ABLink.objects.get_or_create(a=instance) 
if cr: 
    mashup.b = B() 
else: 
    if mashup.b is None: 
     mashup.b = B() 
.... (assign values to mashup.b attributes) 
mashup.b.save() 
mashup.save() 

問題mashup.b永遠不會保存在數據庫中。在檢查phpMyAdmin b被設置爲NULL。任何想法,我可能是錯的

回答

4

做起初創建B例如,屬性分配給它,調用保存就可以了(現在有ID),然後將其分配給mashup.b

if cr: 
    b = B() 
else: 
    if mashup.b is None: 
     b = B() 

#.... (assign values to b attributes) 

b.save() 
mashup.b = b 
mashup.save()