在我的forms.py中,我有一个包含save()
方法的自定义ModelForm:
def save(self):
bus = super().save(commit=False)
datei = self.upload.name
original_dateiname = datei.name
extension = original_dateiname.split('.')[-1]
a = Datei.objects.create(file=datei, original_dateiname=original_dateiname, extension=extension)
self.datei = a
bus.save()
return bus
然而,现在我收到错误:
save() got an unexpected keyword argument 'commit'
这里有什么问题?
答案 0 :(得分:1)
您已重新定义了save方法,因此它不再需要提交参数,但在视图中保存表单时仍然会传递一个。您应该接受该参数并使用它来确定是否将对象保存到db。
def save(self, commit=True):
bus = super().save(commit=False)
...
if commit:
bus.save()
return bus
答案 1 :(得分:1)
您已覆盖save方法,但尚未保留其签名。您需要接受与原始方法相同的参数,并在调用super时将其传入。
def save(self, *args, **kwargs):
super().save((*args, **kwargs)
...