如何在Django中将两个模型字段表示为一个表单字段?

时间:2012-02-17 18:24:12

标签: django django-forms django-multiwidget

我似乎无法弄清楚如何在Django中正确处理以下情况:

我在模型中有一个日期范围,我将其存储为两个单独的字段date_startdate_end

start_date = models.DateTimeField()
end_date = models.DateTimeField()

在此模型的表单中,我想将其表示为一个字段,并带有一个标签:

timespan = forms.Field(widget=widgets.SelectDateRangeWidget(), label="Date Range")

就像现在一样,我扩展了MultiWidget来创建SelectDateRangeWidget

class SelectDateRangeWidget(forms.MultiWidget):
    ...

然后合并两个Date小部件。我想使用它,但随后将其清理为两个单独的模型字段,并保留将初始数据加载到表单字段的功能。是每次手动将initial设置为这两个字段的值的唯一方法,可能是在表单的__init__函数中,也可以手动将其清理为这两个模型字段,或者是否有更清洁(可以这么说)这样做的方法?

1 个答案:

答案 0 :(得分:10)

似乎在使用当前小部件API的django中是不可能的。这张票是最古老的django门票之一,它是7岁:https://code.djangoproject.com/ticket/27

您可以从模型表单中排除原始2字段,创建新字段并覆盖表单的保存方法。