2010-03-29 14 views
5

Come passare un argomento al metodo di salvataggio personalizzato, mantenendo corretto *args, **kwargs per passare al metodo te super? Stavo cercando qualcosa di simile:passaggio di un argomento a un metodo di salvataggio personalizzato()

form.save(my_value) 

e

def save(self, my_value=None, *args, **kwargs): 

    super(MyModel, self).save(*args, **kwargs) 

    print my_value 

ma questo non sembra funzionare. Che cosa sto facendo di sbagliato?

Edit: Ho trovato questo esempio (vedere l'ultimo messaggio, per il passaggio di 'riordino'): http://groups.google.com/group/django-users/browse_thread/thread/b285698ea3cabfc9/6ce8a4517875cb40?lnk=raot

Questo è in sostanza quello che sto cercando di fare, ma my_value si dice che sia un argomento inaspettato per un po ' ragionare.

+0

Stai srotolando gli argomenti nella chiamata per salvare! –

+1

@Beau che significa ..? – Nikita

risposta

14

Gli argomenti delle parole chiave devono seguire gli argomenti posizionali. Prova a modificare:

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

o:

def save(self, *args, **kwargs): 
    my_value = kwargs.pop('my_value', None) 
+0

Sembra non fare il trucco - python dice che si tratta di un errore di sintassi – Nikita

+0

devi aver usato il secondo ... vedi la mia modifica –

+3

+1 per 'kwargs.pop'. –

2

È possibile provare quanto segue.

l'override del metodo salvare come:

def save(self, my_val, *args, **kwargs): 
    print my_val 
    # do_something here 
    return super(MyModel, self).save(*args, **kwargs) 

A chiamare il metodo save come:

MyModel.save(my_val="fooooo") 

questo stamperà my_val e salvare sa che esso.

Problemi correlati