是Django AdminForm缺少has_changed吗?

时间:2015-08-13 16:36:49

标签: django django-forms django-admin

嗨,我对Django很新,并且期待我遗漏一些简单的东西,所以请耐心等待。

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

我们在此页面上使用了grapelli-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. 还是有其他解决方案我不知道。

  4. 干杯

1 个答案:

答案 0 :(得分:1)

AdminFormInlineAdminFormSet是未记录的内部文件。它们不会从forms.Form继承,因此它们没有has_changed方法。

您可以尝试为grappelli-nested-inlines打开一个问题,或者深入了解内幕并尝试弄明白。