Подтвердить что ты не робот

Как представить два поля модели как одно поле формы в Django?

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

4b9b3361

Ответ 1

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

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