7 python django django-forms django-1.8
难以在Django 1.8中使用新的DurationField
我对Django的模型新的DurationField有点麻烦.
我希望用户能够选择我的webapp上的事件持续时间是1天,3天还是5天,默认选择是3天.
在我的模型的开头,我宣布了选择:
SHORT = datetime.timedelta(days=1)
MEDIUM = datetime.timedelta(days=3)
LONG = datetime.timedelta(days=5)
DURATION_CHOICES = ((SHORT, '1 day'),(MEDIUM, '3 days'), (LONG, '5 days'),)
Run Code Online (Sandbox Code Playgroud)
然后在下面,我声明了DurationField:
duration = models.DurationField(choices = DURATION_CHOICES, default = MEDIUM)
Run Code Online (Sandbox Code Playgroud)
我为模型创建了一个ModelForm,并在适当的模板上呈现它.在表格中,"3天"是下拉列表中的预选选项,"1天"和"5天"也是选项.但是,当我提交表单时,我收到表单验证错误"选择有效选项.3天,0:00:00不是可用选项之一."
但是,当我从DurationField中删除选项并保留默认值时:
duration = models.DurationField(default = MEDIUM)
Run Code Online (Sandbox Code Playgroud)
我可以毫无问题地提交.我在这做错了什么?
不知何故,模型选项在或转换为 时choices未给出timedelta字符串。rendertemplate
还有 Model DurationField Field
DurationField 不工作...
我通过使用解决了它ChoiceField
代码:
class TestForm(ModelForm):
SHORT_1 = str(timedelta(days=1)).replace('day,', '')
SHORT = SHORT_1.replace(' ',' ')
MEDIUM_1 = str(timedelta(days=3)).replace('days,', '')
MEDIUM = MEDIUM_1.replace(' ',' ')
LONG_1 = str(timedelta(days=-5)).replace('days,', '')
LONG = LONG_1.replace(' ',' ')
DURATION_CHOICES = ((SHORT, '1 day'),(MEDIUM, '3 days'), (LONG, '5 days'),)
duration = forms.ChoiceField(widget = forms.Select(),
choices = (DURATION_CHOICES), initial='MEDIUM', required = True,)
class Meta:
model = Test
fields = ['duration']
Run Code Online (Sandbox Code Playgroud)
我不知道是否不推荐...我也在寻找为什么 django 默认不工作...
| 归档时间: |
|
| 查看次数: |
7094 次 |
| 最近记录: |