Django ModelForm save()重载

时间:2014-05-05 12:29:50

标签: python django polymorphism django-forms

我正在尝试为ModelForm定义两个不同版本的save()方法,但是唯一正在执行的是第二个版本。当我尝试save()时,我得到错误:save()至少需要3个参数,1个给定。

[...]
def save(self,commit=True):
    return super(NewProgramForm,self).save(commit=True)

def save(self, NameFile, SizeFile , commit=True):
    inst = super(NewProgramForm, self).save(commit=False)
    inst.size = SizeFile
    inst.sketches_file = NameFile
    inst.lines_of_code = 0

    if commit: inst.save()

    return inst

我非常肯定这个错误是微不足道的,但我无法弄清楚错误是什么...... 提前感谢您提供任何有用的提示!

1 个答案:

答案 0 :(得分:1)

使用相同的名称定义多个方法,但不同的属性称为方法重载,并且在Java等语言中很流行。这在Python中是不允许的 - 简单明了。

您需要更改第二个save方法的名称,或者将方法合并到一个方法中,NameFileSizeFile具有默认值(使其成为可选)。