Фильтр даты в шаблоне Django приводит к исчезновению значений формы - PullRequest
0 голосов
/ 30 мая 2019

Я сталкиваюсь со странной дилеммой. Фильтр Django date:"Y/m/d" предотвращает отображение значений формы, если форма не проверена. Вот мой ModelForm:

DATE_INPUT_FORMATS = ['%Y/%m/%d', '%Y-%m-%d']

class PromotionModelForm(ModelForm):
    last_promotion_date = 
forms.DateField(input_formats=DATE_INPUT_FORMATS)

    class Meta:
        model = Professor
        fields = ['last_promotion_date']

Вот мой взгляд:

def first-view(request):
    professor = get_object_or_404(Professor, 
user__username=request.user)
    form = SomeForm(request.POST or None, instance=professor)
    if form.is_valid():
        form.save()
        context = {"form": form}
        return redirect('/first-view')
    else:
        return render(request, 'core/first-view.html', 
context={'form':form})

и вот шаблон:

<form class="inner_box" method="POST" action="{% url 'core:first_view' %}" name="">
            {% csrf_token %}
          <table>
            <tr class="table_header">
              <th colspan="8" class="right">last_promotion_date</th>
              <td><input type="text" name="last_promotion_date" onfocus="displayDatePicker(this.id);" class="date_picker" value="{{ form.last_promotion_date.value|date:"Y/m/d"}}"</td>
            </tr>
</form>

А вот и проблема если форма недопустима, и если я сохраняю фильтр date:"Y/m/d", значения формы, имеющие этот фильтр, не отображаются в отображаемом ответе. Однако, если я удаляю фильтр date:"Y/m/d" из переменных шаблона, форма отображается , включая неверный ввод.

Проблема с фильтром date:"Y/m/d" возникает только тогда, когда форма не проверена. Те же самые значения дат, которые отображаются в запросе «GET», исчезают в ответе на запрос «POST», если форма не проверена.

Это довольно загадочно. Что мне здесь не хватает? Почему недопустимые значения формы не отображаются при наличии фильтра date:"Y/m/d"?

1 Ответ

0 голосов
/ 30 мая 2019

Если поле не будет проверено, его значение, вероятно, не будет правильным date объектом или чем-либо, что может быть проанализировано до действительной даты.Вот почему использование |date в значении не даст никакого результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...