Django 1.10。
尝试学习表格。
The problem is that I can't manage to make form.has_changed() become a False.
即form.has_changed()始终为True。怀疑原因是在DateField中。因为pub_date = forms.CharField()给出了预期的False结果。
文档:this
你可以在这里给我一个动作:1)是因为DateField吗?
2)如果是这样,为什么会这样?该 在我看来,实验中产生的形式是相同的。 3) 3)如何应对?
代码:
class PubDateForm(forms.Form):
pub_date = forms.DateField()
pub_date_data = {'pub_date': '2015-01-01'}
form = PubDateForm(
pub_date_data,
initial=pub_date_data
)
has_changed = form.has_changed()
实验:
pub_date_data = {'pub_date': '2015-01-01'}
form = PubDateForm(pub_date_data
# , initial=pub_date_data
)
has_changed = form.has_changed()
PubDateForm: <tr><th><label for="id_pub_date">Pub date:</label></th><td><input id="id_pub_date" name="pub_date" type="text" value="2015-01-01" required /></td></tr>
pub_date_data = {'pub_date': '2015-01-01'}
form = PubDateForm(
# pub_date_data,
initial=pub_date_data
)
PubDateForm: <tr><th><label for="id_pub_date">Pub date:</label></th><td><input id="id_pub_date" name="pub_date" type="text" value="2015-01-01" required /></td></tr>
答案 0 :(得分:0)
在初始数据中使用date
对象而不是字符串
pub_date_data = {'pub_date': date(2015, 1, 1)}
请注意,重要的是initial
值是日期。如果您将表单数据提供为字符串,如下例所示,那么form.has_changed()
将返回False
。
form = PubDateForm(data={'pub_date': '2015-01-01'},
initial={'pub_date': date(2015, 1, 1)}
)