2011-05-28 30 views
2

我創建一個地方有人進入networklocation和網絡的administrators形式。這是我的模型 -添加一個模型對象的父表

class Administrator(models.Model): 
    email = models.EmailField() 
    name = models.CharField(max_length=100, blank=True) 

class Network(models.Model): 
    name = models.CharField(max_length=50) 
    location = models.CharField(max_length=50) 
    administrators = models.ManyToManyField(Administrator, blank=True) 

我怎麼能創造這樣,當網站管理員將管理員的網絡,它將立即在Administrator類條目,然後連接起來,即在一個窗體administrators列?

回答

1

爲表單對象的加工定製使用form.save(commit=False)

這節省()方法接受一個可選 提交關鍵字參數,它接受 True或False。如果您用commit = False調用 save(),那麼它會將 返回一個還沒有被保存到數據庫的 的對象。在這種情況下, 由您調用 生成的模型實例上的save()。如果您想要在保存 之前對對象執行自定義 處理,或者如果您想要使用 專用模型保存選項之一,則此爲 有用。

來自:https://docs.djangoproject.com/en/1.0/topics/forms/modelforms/#the-save-method


所以,如果你有一個NetworkForm你可以使用commit=False,然後檢查你的管理員已經存在,或者他是否需要創建。 get_or_create真的很方便。

然後,您可以在窗體上將administrator設置爲新創建或獲取的管理員實例並保存表單(使用form.save()form.save_m2m())。

相關問題