Как представить два модельных поля как одно поле формы в Django? - PullRequest
13 голосов
/ 17 февраля 2012

Я не могу понять, как правильно справиться со следующей ситуацией в 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__ формы, а также вручную очистить его в этих двух полях модели, или есть очиститель (так что говорите) способ сделать это?

1 Ответ

10 голосов
/ 18 февраля 2012

Кажется, это невозможно в django, используя текущий API виджетов.Билет является одним из самых старых билетов на django, ему 7 лет: https://code.djangoproject.com/ticket/27.

Вы можете исключить 2 исходных поля из формы модели, создать новое поле и переопределить метод сохранения формы.

...