Python Django:save()得到一个意外的关键字参数';提交';

Python Django:save()得到一个意外的关键字参数';提交';,python,django,Python,Django,在my forms.py中,我有一个自定义ModelForm,其中包含一个save()方法: 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(fil

在my forms.py中,我有一个自定义ModelForm,其中包含一个
save()
方法:

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()得到一个意外的关键字参数“commit”


这里出了什么问题?

您重新定义了save方法,使其不再接受commit参数,但在视图中保存表单时仍在传递一个参数。您应该接受参数并使用它来确定是否将对象保存到db

def save(self, commit=True):
    bus = super().save(commit=False)
    ...
    if commit:
        bus.save()
    return bus

您已经重新定义了save方法,使其不再接受commit参数,但在视图中保存表单时仍在传递一个commit参数。您应该接受参数并使用它来确定是否将对象保存到db

def save(self, commit=True):
    bus = super().save(commit=False)
    ...
    if commit:
        bus.save()
    return bus

您已重写save方法,但尚未保留其签名。您需要接受与原始方法相同的参数,并在调用super时传入它们

def save(self, *args, **kwargs):
    super().save((*args, **kwargs)
    ...

您已重写save方法,但尚未保留其签名。您需要接受与原始方法相同的参数,并在调用super时传入它们

def save(self, *args, **kwargs):
    super().save((*args, **kwargs)
    ...

save()
方法没有参数
commit
默认参数为
force\u insert=False,force\u update=False,using=None,update\u fields=None
@Jerin no,即模型保存方法。OP说这就是形式。
save()
方法没有参数
commit
默认参数是
force\u insert=False,force\u update=False,using=None,update\u fields=None
@Jerin no,这就是模型保存方法。OP说这是表格。