0
我重寫了我的ModelAdmin的save_model方法,以便可以在模型上設置一些其他字段。但是,我不斷收到DoesNotExist異常。我用調試器遍歷代碼,我有點困惑。爲什麼傳遞給ModelAdmin.save_model的對象與模型不匹配?
該模型具有這一領域:
created_by = models.ForeignKey(User, db_column='created_by', related_name='%(class)s_creator')
在save_model方法時,我看obj
參數的屬性,我看到:
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_id」來自,爲什麼'created_by'不存在?
沒有特別的原因了'db_column ='created_by'',我只是喜歡那個。也許我應該讓Django來處理。問題中的信息是'save_model'方法開始時'obj'的樣子,在我做了任何事情之前。我想將模型的'created_by'字段賦值爲'request.user'。 – Pikaling 2012-01-28 15:25:11
在分配了值之前,您無法訪問'obj.created_by'。我已經更新了我的答案,並提出了你的'save_model'方法應該是什麼樣子的建議。我建議你不要使用'db_column',但如果你願意,你可以在這裏使用它。 – Alasdair 2012-01-28 19:58:11
現在這是有道理的 - 我想在我分配它之前檢查它是否已經被分配。我改變了我的代碼,以便檢查'created_by_id',如果沒有,它會分配給'created_by'。感謝您的幫助 – Pikaling 2012-01-28 20:16:27