2016-06-13 11 views
0

ich das Überschreiben der .save() Methode eines django Modell und ich versuche, ein zusätzliches Argument übergeben beim Speichern:Django - wie kwargs verwenden

Ausblick:

def form_valid(self, form):  
    response = super(DeliveryCreateView, self).form_valid(form)  
    self.object.save(owner=self.request.user) 
    return response 

Im .save()

def save(self, *args, **kwargs):    
    owner = kwargs.pop('owner', None) 

Mein Problem ist, dass Besitzer immer leer kommt. Was mache ich falsch?

+0

'Besitzer' kommt leer oder' Besitzer' ist nicht in 'Kwargs'? – Gocht

+1

Hast du das wirklich in 'save()'? Weil "owner" eine lokale Variable ist, die verschwindet, wenn 'save()' zurückkommt. Meinst du nicht "self.owner = ..."? – alexis

Antwort

0

Angenommen, dies ist eine Standardansicht zum Erstellen oder Aktualisieren, die Superklasse form_valid ruft bereits die Modellspeichermethode über das Formular auf. Sie müssen entweder mit dieser Situation umgehen oder nicht super anrufen.

+0

Sie haben Recht. Ich habe es geschafft, das Argument zu übergeben, aber wie du gesagt hast, wird die .save() doppelt aufgerufen. –