2015-08-18 70 views
0

設置many2many域的默認值的正確方法是什麼?這是我在下面嘗試的,但它不起作用。我知道我可以重寫保存方法,但是每次模型更新時都不會調用它?我只想在每次創建實例時設置模型的初始值。在django中設置ManyToMany域的默認值的正確方法

def default_values(): 
    return [c.id for c in SomeOtherModel.objects.filter(otherfield__isnull = True)] 


class SomeModel(models.Model): 
    somefield = models.ManyToManyField('SomeField', default=default_values) 
    semeotherfield = models.ForeignKey('SomeOtherField') 

我使用Django 1.8

回答

1

您可以覆蓋保存方法,以及內部的插入檢查,如果主鍵是空的。如果它是空的 - 這是對象的創建。

你也可以連接到後保存信號 - 有屬性告訴你,如果這是創建對象或不。

+0

好吧,我會試試看。但是你知道爲什麼上述方法不起作用嗎? –

+0

我現在得到這個錯誤:「[]需要在字段[]中有一個值,然後才能使用這個多對多關係。」我的保存方法在上面。 –

+1

它的工作,謝謝,我只是在填充字段之前保存模型。 –

相關問題