【问题标题】:is Django AdminForm missing has_changed?Django AdminForm 是否缺少 has_changed?
【发布时间】:2015-08-13 16:36:48
【问题描述】:

您好,我是 Django 新手,希望我遗漏了一些简单的东西,所以请多多包涵。

尝试在管理页面上保存数据时遇到 500 错误。

我们在此页面上使用gratelli-nested-inlines (https://github.com/datahub/grappelli-nested-inlines)。

当我将文本更改为 TextField 时,我收到此错误:

AttributeError at /_admin/...
'InlineAdminFormSet' object has no attribute 'has_changed'
Request Method: POST
Request URL:    http://localhost:8000/_admin/...
Django Version: 1.7.4
Exception Type: AttributeError
Exception Value:    
'InlineAdminFormSet' object has no attribute 'has_changed'
Exception Location: venv/lib/python3.4/site-packages/grappelli_nested/forms.py in <genexpr>, line 36
Python Executable:  venv/bin/python
Python Version: 3.4.3
Python Path:    
['venv/lib/python34.zip',
 'venv/lib/python3.4',
 'venv/lib/python3.4/plat-darwin',
 'venv/lib/python3.4/lib-dynload',
 '/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4',
 '/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/plat-darwin',
 'venv/lib/python3.4/site-packages']
Server time:    Thu, 13 Aug 2015 15:24:08 +0000

InlineAdminFormSet 在https://github.com/django/django/blob/master/django/contrib/admin/helpers.py 中定义为一个AdminForm。

根据 Django 文档,我希望所有表单都定义了 has_changed 方法,但这个似乎没有。

我没有看到其他人提到这个问题,所以这让我相信我错过了一些东西。

有人可以帮我澄清一下吗:

  1. AdminForm 是否应该有一个 has_changed 方法(如果有,我该如何推动它?)

  2. 如果不是,我应该用葡萄叉处理这个吗?

  3. 或者我还缺少其他解决方案。

干杯

【问题讨论】:

  • 您能否发布完整的回溯以及导致错误的代码?这可能会让发生的事情更清楚。

标签: django django-forms django-admin


【解决方案1】:

AdminFormInlineAdminFormSet 是未记录的内部结构。它们不继承自forms.Form,因此它们没有has_changed 方法。

您可以尝试为grappelli-nested-inlines 开一个问题,或者深入挖掘内部并尝试找出答案。

【讨论】:

  • 我已经在本地进行了必要的修复,但对过程没有什么困惑。
  • 我只是想确认我看到的东西是正确的。谢谢。
猜你喜欢
  • 2011-09-04
  • 2014-01-12
  • 2013-06-14
  • 2016-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
相关资源
最近更新 更多