ModelAdminのsave_modelメソッドをオーバーライドしているため、モデルにいくつかの追加フィールドを設定できます。しかし、私はDoesNotExist例外を取得し続けます。私はデバッガでコードを踏んでいて、ちょっと混乱しています。ModelAdmin.save_modelに渡されたオブジェクトがモデルと一致しないのはなぜですか?
モデルは、このフィールドを持っている:save_model方法で
created_by = models.ForeignKey(User, db_column='created_by', related_name='%(class)s_creator')
私はobj
パラメータの属性を見ると、私はこの参照:「created_by_idは」から来たの
Name:
created_by
Value:
str: Traceback (most recent call last):
File "/home/vicki/.eclipse/org.eclipse.platform_3.7.0_155965261/plugins/org.python.pydev.debug_2.3.0.2011121518/pysrc/pydevd_resolver.py", line 182, in _getPyDictionary
attr = getattr(var, n)
File "/usr/lib/pymodules/python2.7/django/db/models/fields/related.py", line 301, in __get__
raise self.field.rel.to.DoesNotExist
DoesNotExist
Name:
created_by_id
Value:
NoneType: None
をなぜ 'created_by'は存在しないのですか?
'フィールドのdb_column = 'created_by''のための特別な理由、私はちょうどそれを好みます。たぶん、私はDjangoが代わりにそれを処理する必要があります。問題の情報は、 'save_model'メソッドの最初の段階で' obj'がどのように見えるか、私は何かをする前です。モデルの 'created_by'フィールドに' request.user'を割り当てたいと思います。 – Pikaling
値が割り当てられるまで、 'obj.created_by'にアクセスすることはできません。あなたの 'save_model'メソッドがどのように見えるかを提案して私の答えを更新しました。 'db_column'を使わないことをお勧めしますが、望むならここで使うことができます。 – Alasdair
ああ、それは意味があります - 私はそれが割り当てられる前に既に割り当てられていたかどうかを確認したいと思っていました。私は自分のコードを変更して 'created_by_id'をチェックし、もしなければ' created_by'を割り当てます。あなたの助けをありがとう – Pikaling