2009-07-08 11 views
37

Ho bisogno di usare qualcosa come get_or_create() ma il problema è che ho molti campi e non voglio impostare i default (che comunque non hanno senso), e se non lo faccio imposta i valori predefiniti restituisce un errore, perché a quanto pare salva l'oggetto immediatamente.Does get_or_create() deve salvare subito? (Django)

Posso impostare i campi su null = True, ma non voglio campi null.

C'è qualche altro metodo o parametro aggiuntivo che può essere inviato a get_or_create() in modo che esso instanzia un oggetto ma non lo salvi fino a quando non chiamo save() su di esso?

Grazie.

risposta

37

si può solo fare:

try: 
    obj = Model.objects.get(**kwargs) 
except Model.DoesNotExist: 
    obj = Model(**dict((k,v) for (k,v) in kwargs.items() if '__' not in k)) 

che è più o meno quello get_or_create fa, sans commettono.

Problemi correlati