2016-09-26 7 views
0

Django 1.10。DateFieldを使用したフォーム:確認する方法has_changed()

学習用のフォームを試してみる。

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の結果を返すためです。

ドキュメント:https://docs.djangoproject.com/es/1.10/ref/forms/api/#django.forms.Form.has_changed

はあなたが私にここにキックもらえ:

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

代わりに文字列

pub_date_data = {'pub_date': date(2015, 1, 1)} 
の初期データで dateオブジェクトを使用します

重要なことは、initialの値を日付にすることです。下の例のようにフォームデータを文字列として指定すると、form.has_changed()Falseを返します。

form = PubDateForm(data={'pub_date': '2015-01-01'}, 
        initial={'pub_date': date(2015, 1, 1)} 
        ) 
関連する問題