python - Django 1.8 管理表单 : AttributeError XForm object has no attribute 'save_m2m'

标签 python django django-forms django-admin

我正在尝试为 Django 中具有附加字段的模型创建自定义表单,但是当我尝试提交表单时,出现以下错误:

AttributeError:“UnitForm”对象没有属性“save_m2m”

这特别奇怪,因为我没有名为 UnitForm 的表单。

我的forms.py看起来像

class UnitAdminForm(forms.ModelForm):
    time_changed = forms.SplitDateTimeField(widget=widgets.AdminSplitDateTime)

    class Meta:
        model = Unit
        fields = ['status','time_changed']

    def save(self, commit=True):
        changed_at = self.cleaned_data.get('time_changed', None)
        self.instance.status = self.cleaned_data['status']
        self.instance.save(changed_at=changed_at) #the changed_at part is handled on the model
        super(UnitAdminForm, self).save()
        return self.instance

我的admin.py看起来像:

class UnitAdmin(admin.ModelAdmin):
     form = UnitAdminForm
     list_display = ('__unicode__','status')
 admin.site.register(Unit, UnitAdmin)

管理员似乎正在创建一个新类(UnitForm),它是我提供的类的子类,但我仍然不确定为什么这个 save_m2m 方法不存在或者我应该如何正确修复此错误。

最佳答案

您没有 UnitForm,但您在 UnitAdmin 中声明了一个。尝试将 UnitAdmin 类更改为:

class UnitAdmin(admin.ModelAdmin):
     form = UnitAdminForm
     list_display = ('__unicode__','status')
admin.site.register(Unit, UnitAdmin)

编辑:好的,我猜你的问题是你手动保存并忘记从 django docs about save() 调用 save_m2m() :

To work around this problem, every time you save a form using commit=False, Django adds a save_m2m() method to your ModelForm subclass. After you’ve manually saved the instance produced by the form, you can invoke save_m2m() to save the many-to-many form data.

关于python - Django 1.8 管理表单 : AttributeError XForm object has no attribute 'save_m2m' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34667558/

相关文章:

python - 无法在 Django 中呈现表单

python - Django 表单 is_valid() 缺少 1 个必需的位置参数 : 'self'

Visual Studio 中的 Python : Erroneous errors

python - 动态改变 scipys ndimage 过滤器中的过滤器大小

python - Django Heroku,服务器不支持 SSL,但需要 SSL

django - 错误 404 Nginx 找不到媒体文件。 + Django

django - 如何在保存之前访问 django 模型表单中字段的先前值?

python - 如何控制 python 脚本的哪些部分以 root 身份运行

python - Pygame 屏幕抖动减慢游戏速度如何修复?

python - Django Nonrel - 无法登录开发服务器上的管理面板