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