(Django) Как сохранить значения ввода после отправки формы

Я имею следующий вид (усеченный):

def scheduler(
    request,
    year=None,
    month=None,
    event_id=None,
    delete_id=None,
):
    # Handle the event form
    if request.POST:
        event_form = EventForm(request.POST, instance=event)
        if event_form.is_valid():
            event = event_form.save()
            dfkl_number = event_form.cleaned_data['dfkl_id']
            Event.objects.filter(
                id=event.id,
            ).update(dfkl_number=dfkl_number)
            start_time = event_form.cleaned_data['start_time']
            start_time = user_tz.localize(start_time.replace(tzinfo=None))
            end_time = event_form.cleaned_data['end_time']
            end_time = user_tz.localize(end_time.replace(tzinfo=None))
            # if the end time is before the start time, try setting it to the same day
            if end_time < start_time:
                end_time = end_time.replace(
                    year=start_time.year,
                    month=start_time.month,
                    day=start_time.day)
            # if the hour is also before, just use the start time
            if end_time < start_time:
                end_time = start_time
            Event.objects.filter(
                id=event.id,
            ).update(start_time=start_time)
            Event.objects.filter(
                id=event.id,
            ).update(end_time=end_time)
            return HttpResponseRedirect('/events')

Я хочу, чтобы при отправке формы (if request.POST), независимо от того, действительна форма или нет, значения входов не исчезали.

scheduler.html:

Входы event_form.description, event_form.event_type, event_form.dfkl_id сохраняют свои значения после нажатия кнопки submit, но по какой-то причине значение datetimepickers исчезает.

Как сделать так, чтобы значение ввода в datetimepickers не исчезало при отправке формы?

Вам нужно вернуть ту же форму, которая была проверена, чтобы вернуть то же содержимое ввода и ошибки формы. Также переместите ваш запрос POST после определения контекстных данных (После data) Например, так:

if request.POST:
    event_form = EventForm(request.POST, instance=event)
    if event_form.is_valid():
        [... validate logic ...]
        return HttpResponseRedirect('/events')
    data.update({'event_form':event_form})
    return render(request, template_name, data) 

Теперь, если event_form не подтверждается, то у него есть маршрут для возврата.

Вернуться на верх