我有一個ModelForm
類,其中我設置了幾個字段爲ChoiceField
。對於我的觀點之一,我想創建從我ModelForm
類的形式,從我的模型的實例拉在數據庫中(像這樣):Django ModelForm ChoiceField不顯示實例數據
form = MyModel(instance=model_instance)
當我做到這一點,然後渲染形式在模板中,我注意到大多數字段都預先填充了從模型實例中提取的值,這正是我想要的。但是,這不是兩個ChoiceField
字段的情況。這些呈現爲下拉選擇菜單,沒有選擇特定的選項。
奇怪的是,如果我沒有在我的ModelForm類中將這兩個字段定義爲ChoiceField
-type,它們將呈現爲HTML中的普通文本輸入字段,並使用數據庫值進行預填充。但是當我將它們定義爲使它們在HTML中顯示爲選擇選項輸入字段時,沒有任何內容是預選的。我可以改變它嗎,以便預先選擇數據庫中的值嗎?
編輯:如這裏要求是我的模型和形式的代碼:
class App(models.Model):
CODES = (
(u'a',u'annual'),
(u'm',u'monthly'),
(u'w',u'weekly')
)
code = models.CharField(max_length=1, choices=CODES)
start_time = models.TimeField(blank=True, null=True)
end_time = models.TimeField(blank=True, null=True)
class AppForm(ModelForm):
CODES = (
(u'',u'Please select code'),
(u'a',u'annual'),
(u'm',u'monthly'),
(u'w',u'weekly')
)
TIMES = (
(u'00:00',u'All Day'),
(u'12:00',u'Noon')
)
start_time = forms.ChoiceField(required=False, choices=TIMES)
end_time = forms.ChoiceField(required=False, choices=TIMES)
code = forms.ChoiceField(choices=CODES, label='Type')
class Meta:
model = App
有趣的是,code
字段時爲HTML呈現預選就好模型實例值。我想知道模型定義中的choices
參數是否有所不同?
更新:我只注意到,如果我拉了一個App
例如在python manage.py shell
像這樣:
a = App.objects.get(id=16)
a.start_time
我得到這樣datetime.time(12, 0)
的值。但是在Django管理員中,當我查看所有App
實例時,它們全都顯示(None)
在start_time
和end_time
之下。爲什麼會這樣?
可能重複http://stackoverflow.com/questions/624265/how-do-i-make-a-django -modelform-menu-item-by-default)等等。 –
您可以將代碼發佈到您的模型和表單中。謝謝。 – Amyth
@Hedde,沒有看到默認選擇的選項。我希望所選的選項來自對象實例。您會注意到我實際上在其他問題的答案之下發布了一條評論,這正是因爲它對我無效。 – GChorn