13

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

我在模型中有一个日期范围,我将其存储为两个单独的字段,date_start并且date_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__在表单的功能中,并且还手动将其清理到这两个模型字段中,或者是否有更清洁(可以这么说)的方式来做到这一点?

4

1 回答 1

10

在 django 中使用当前的小部件 API 似乎是不可能的。该票是最古老的 django 票之一,已有 7 年历史:https ://code.djangoproject.com/ticket/27 。

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

于 2012-02-18T15:26:55.463 回答