我創建了基於模型的表單。該模型有許多領域。我這樣定義的字段:django many2many字段使不要求
contacts = models.ManyToManyField(Contact, blank=True, null=True)
現在我真的不知道爲什麼生成的表單說,這個字段不能爲空。當我沒有爲聯繫人字段選擇聯繫人時,我總是收到錯誤消息「此字段是必需的」。
Whats`s wrong?
我創建了基於模型的表單。該模型有許多領域。我這樣定義的字段:django many2many字段使不要求
contacts = models.ManyToManyField(Contact, blank=True, null=True)
現在我真的不知道爲什麼生成的表單說,這個字段不能爲空。當我沒有爲聯繫人字段選擇聯繫人時,我總是收到錯誤消息「此字段是必需的」。
Whats`s wrong?
在您的形式聲明標誌這一領域作爲required=False
class MyForm(forms.ModelForm):
contacts=forms.ModelMultipleChoiceField(queryset=Contact.objects.all(),required=False)
class Meta:
model=MyModel
在添加blank=True, null=True
之前,可能你做了syncdb
?
syncdb
只會在數據庫中不存在的情況下創建表。模型的更改必須在數據庫中直接使用SQL或使用遷移工具(如South)手動完成。
當然,如果您仍處於早期開發階段,將會更容易丟棄數據庫並再次運行syncdb
。
不,我沒有運行執行syncdb。我也曾運行過django evolution http://code.google.com/p/django-evolution/。 我還以爲這是問題。也許一滴水是一個好主意。 – 2009-12-30 23:27:49
您對null = True的使用在這裏引起混淆。 manyToMany字段導致第三個表格將一個模型與另一個模型相關聯。例如如果business.contacts
爲空,則表中沒有記錄。 null=True
會讓我認爲你打算將NULL
記錄添加到此表中,這似乎不是有效的。
通常,您將離開這兩個這些屬性關閉。
好吧,但如果我離開這兩個屬性,他們是必需的。實際上,如果用戶至少需要添加一個m2m的關係,那麼這不是一個大問題,但如何實現這一點仍然很有趣。 – 2009-12-30 23:37:48
是的,這是有效的。謝謝! – 2009-12-31 10:01:32
你知道嗎?如果我想過濾與限制有關的聯繫人,它只應顯示與當前的表單實例相關的聯繫人,我的意思是它應該顯示與聯繫人相關的聯繫人不是全部。對於新的表單應該是空的,queryset = Contact.objects.filter(Contact.objects.filter(self.instance。????) – shahjapan 2010-07-16 06:41:49