2011-07-19 4 views
1

内のフィールドにアクセスしようとしたときにはAttributeError私はどこかのフォームを持っていますやっている? a_fieldが EX初期化されていないためだジャンゴフォーム

+0

あなたはそれを呼び出す前にf.a_fieldを初期化しようとしましたか? – Luke

答えて

4

Formの方法では、属性は属性として削除され、fields属性に追加されます。これは、宣言的な構文を使用してFormを定義できるように行われますが、時刻が来るとフィールドをループすることができます。

>>> f = FooForm() 
>>> f.fields['a_field'] 
<django.forms.fields.CharField object at 0x1750350> 

ロジックは2か所にあります。 django/forms/forms.pyには、クラスDeclarativeFieldsMetaclassとメソッドget_declared_fieldsが含まれています。これら2つのビットには、すべてをfieldsリストに移動するロジックが含まれています。

+0

私は何も提案されていませんでしたが、get_declared_fieldsは廃止されました。 – christophe31

-1

:あなたはデータを追加し、[保存]を実行する必要が

>>> f.a_field = 'hi' 
>>> print f.a_field 
'hi' 

は()

+0

それはちょうど真実ではない。 –

1

フォームフィールドには、「フィールド」プロパティを通じてアクセス可能があります。シェルから

>>> f = FooForm() 
>>> f.fields['a_field'] 

が返されます:

<django.forms.fields.CharField object at [memory location]> 

それが値を持っていない限り、あなたはf.a_fieldを使用してフィールドにアクセスすることはできません。