我正面临着一个奇怪的难题。如果表单未经验证,则Django 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']
过滤器可防止显示表单值。这是我的ModelForm:
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"
过滤器,则会将该表单呈现为包括无效输入。
date:"Y/m/d"
过滤器的问题仅在表单未经验证时才会发生。如果表单未经验证,则在“ GET”请求中呈现的相同日期值将在“ POST”请求的响应中消失。
这很令人困惑。我在这里想念什么?为什么在存在list.items()
过滤器的情况下无效表单的值不会出现?
答案 0 :(得分:0)
如果该字段无效,则该值很可能不是正确的date
对象或任何可以解析为有效日期的值。这就是为什么对值使用|date
不会产生任何结果的原因。