Как получить обновленную текущую дату в django forms.DateInput значение - PullRequest
0 голосов
/ 17 января 2020

Как мне обновлять текущую дату в поле формы? Я пытался установить дату в views.py и forms.py, но в этом случае он сохраняет дату в кэше только один раз (когда я обновляю index.wsgi), а затем не обновляет дату при каждой перезагрузке страницы. Ежедневный перезапуск приложения не вариант. Я не могу поверить, что javascript единственный путь. Я просто застрял на этом, помогите мне, пожалуйста.

Как это выглядит сейчас: у меня есть форма:

class AddRecordForm(forms.ModelForm):
    class Meta:
        model = Journal
        fields = ['date']
        widgets = {
            'date': forms.DateInput(attrs={'type': 'date', 'class': 'form_input', 'value': date.today().strftime("%Y-%m-%d")}),

Из этой модели:

class Journal(models.Model):
    date = models.DateTimeField()

И в результате html:

<input type="date" name="date" class="form_input" value="2020-01-17" required="" id="id_date">

выглядит хорошо, но если я go выйду на страницу завтра, все равно будет 2020-01-17. Но это должно быть 2020-01-18 и так далее. Дата в форме обновляется только после перезагрузки приложения (коснитесь index.wsgi).

UPD: Как выяснилось, фронтенд - это единственный способ. Решил проблему в JS:

    var now = new Date();
    var day = ("0" + now.getDate()).slice(-2);
    var month = ("0" + (now.getMonth() + 1)).slice(-2);
    var today = now.getFullYear()+"-"+(month)+"-"+(day) ;
    $("#id_date").val(today);

1 Ответ

0 голосов
/ 17 января 2020

Вам нужно будет использовать компонент внешнего интерфейса

, т. Е. Средство выбора даты / времени, в отличие от установки значения в бэкэнде, поскольку ко времени визуализации шаблона эта дата / время становится недействительной (в вашем на следующий день).

form.py


class AddRecordForm(forms.ModelForm):
    date = forms.DateTimeField(
        input_formats=['%d/%m/%Y %H:%M'],
        widget=forms.DateInput(
           attrs={
                'type': 'date', 
                'class': 'form_input',
           },
        ),
    )

    class Meta:
        model = Journal
        fields = ['date']

form.html

{{ form.date.id_for_label }}

<script>
  $(function () {
    $("#{{ form.date.id_for_label }}").datetimepicker({
      format: 'd/m/Y H:i',
    });
  });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...