我想以下列形式之一显示和保存日期数据:
为实现这一目标,我有以下模型结构:
我有Model
以下结构
CHOICES = [
(0, "Year/Month/Date"),
(1, "Year/Month"),
(2, "Year"),
]
class MyModel(Model):
my_date = Models.DateField(...)
my_date_format = Models.SmallIntegerField(choices=CHOICES)
在ModelForm
class MyForm(ModelForm):
class Meta:
model = MyModel
widgets = {"my_date": SelectDateWidget(required=False), }
我的逻辑如下:
my_date_format
设置为0。my_date_format
设置为1,因此我将在之后忽略my_date数据的日期部分。my_date_format
设置为2,因此我将在之后忽略my_date数据的日期和月份。我的问题是表单验证。 SelectDateWidget需要验证日期并将其强制转换为python datetime.date
,但我需要发布数据以检查哪个字段为空以设置my_date_format
值。
我必须将日期数据保存为date
到我的数据库,以便我可以正确查询。
我应该如何覆盖form.clean()
方法?
答案 0 :(得分:0)
我会尝试这样的事情。
免责声明:未经测试但可能会为您提供想法。
def clean(self):
cleaned_data = super(MyForm, self).clean()
# Check the my_date_format value here
...
# Then generate appropriate datetime according your own rules
my_datetime = ...
# Add datetime to the cleaned_data dictionnary
cleaned_data['my_date'] = my_datetime
return cleaned_data