0

私のdjangoモデルの1つの保存で、変更されたすべてのフィールドを取得するためにdjango-dirtyfieldsを使用しています。ただし、それらは新しい値を保存しないので、すべてのダーティ フィールド (変更されたフィールド) を dirty_fields という名前のリストに取得します。次に、オブジェクトを保存し、新しいフィールドのすべての値を変更後の値に取得しようとします。私が持っているものがうまくいかないのはなぜですか?「オブジェクトには属性「フィールド」がありません

new_values = ['{0}: {1}'.format(field,self.field) for field in dirty_fields] 
4

1 に答える 1

1

dirty_fields変更されたフィールドの辞書になります。例えば

{'boolean': True, 'characters': 'testing'}

を使用して反復する場合、辞書キーを参照します (例: for field in dirty_fieldsand ) 。インスタンスで属性ルックアップ名が試行されるため、使用できません。field'boolean''characters'self.fieldfield

代わりに、fieldキー値を取得し、このフィールドをgetattr()を使用して self のインスタンスで検索するように依頼する必要があります。

これを試して:

new_values = ['{0}: {1}'.format(field, getattr(self, field)) for field in dirty_fields] 
于 2013-03-28T01:28:36.083 に答える