質問

I am trying to define two different versions of the save() method for a ModelForm, but the only one being executed is the second one. When i try to save() i get error: save() takes at least 3 arguments, 1 given.

[...]
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

I'm quite sure the error is trivial, but i can't figure out what's wrong... Thank you in advance for any useful tip!

役に立ちましたか?

解決

Defining multiple methods with the same name, but different attributes is called method overloading and is popular in languages such as Java. This is not permitted in Python - plain and simple.

You need to change the name of the second save method, or merge the methods into one method with NameFile and SizeFile having a default value (making them optional).

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top