我目前有一個問題,並可能忽略一些非常微不足道的事情。我的模型中有一個字段允許通過複選框表單進行多項選擇(它不必是管理員屏幕中的複選框,只是在最終用戶將看到的表單區域中)。目前我有這樣的現場設置:Django ModelForm CheckBox Widget
# Type of Media
MEDIA_CHOICES = (
('1', 'Magazine'),
('2', 'Radio Station'),
('3', 'Journal'),
('4', 'TV Station'),
('5', 'Newspaper'),
('6', 'Website'),
)
media_choice = models.CharField(max_length=25,
choices=MEDIA_CHOICES)
我需要採取的是,並在其中形式的複選框可選字段。當我創建一個ModelForm時,它想要做一個下拉框。所以我自然而然地超越了這個領域,並且我得到了我想要的複選框。但是,當提交表單時,看起來管理員屏幕上看起來沒有任何用處。但數據庫確實顯示我選擇了很多東西,這是一個積極的信號。但是,如何才能在管理屏幕中正確反映這一點?
編輯:FWIW我很樂意接受文檔鏈接作爲答案,因爲它似乎我只是掩蓋了一些明顯的東西。
感謝您的提示。不想使用ManyToMany,因爲我會創建大約6個模型,以獲取永遠是靜態的信息。似乎沒有必要。 – f4nt 2009-08-12 20:32:40
另外,fwiw,似乎沒有工作。當我使用CheckBoxSelectMultiple表單時,該字段呈現爲空白。如果我使用MultipleChoiceField,使用Checka工具,但只有當我提供一個選項列表。然後我必須使用overriden clean函數將數據映射回來。也許這是正確的方式,但它「感覺」是錯誤的,通常當「感覺」錯誤時,就是這樣。只是想驗證我在這裏沒有做得太過分。 – f4nt 2009-08-12 21:05:40
嗯,我不這樣做是正確的,所以感謝設置我直在那裏,但現在我有這樣的: 在Models.py: MEDIA_TYPE = models.ManyToManyField(MediaChoice) 在Forms.py: 高清__init__ (self,* args,** kwargs): super(MediaContactForm,self).__ init __(* args,** kwargs) self.fields ['media_type']。widget = forms.CheckboxSelectMultiple() – f4nt 2009-08-12 21:39:25