gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 17:05:01 32 4
gpt4 key购买 nike

我正在尝试为 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/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com