2011-11-14 3 views
5

Otrzymuję błąd save() got an unexpected keyword argument 'force_insert'. Z tego http://groups.google.com/group/django-users/browse_thread/thread/2471efd68d56ad59 wygląda na to, że odpowiedź jest w użyciu:Django save() ma nieoczekiwany argument słowa kluczowego "force_insert" error

def save(self, *args, **kwargs): 
... 
    super(SiteUser, self).save(*args, **kwargs) 

Moje pytanie brzmi: w jaki sposób go o określenie force_insert=True lub force_insert=False kiedy robić.

Mój kod to:

def save(self, force_insert=False, force_update=False): 
     if not self.id: 
     self.pub_date = datetime.datetime.now() 
     self.updated_date = datetime.datetime.now() 
     self.description_html = markdown(self.description) 
     self.highlighted_code = self.highlight() 
     super(Snippet, self).save(force_insert, force_update) 

Odpowiedz

3

kwargs jest dict. Ustaw go tak jak każdą inną wartość dyktowaną.

kwargs['force_insert'] = True 
+0

Widzę, że działa, jeśli chcesz przesłonić wartość, ale jak określiłbyś ją jako wartość domyślną, tak jak w moim kodzie? – Superdooperhero

+0

Sprawdź, czy już istnieje w słowniku. –

+0

Zmieniono mojego kodu: def zapisać (self, * args, ** kwargs): jeśli nie 'force_insert' w kwargs: kwargs [ 'force_insert'] = False jeśli nie 'force_update' w kwargs: kwargs [” force_update '] = false jeśli nie self.id: self.pub_date = datetime.datetime.now() self.updated_date = datetime.datetime.now() self.description_html = Przecena (self.description) siebie. highlighted_code = self.highlight() super (Snippet, self) .save (* args, ** kwargs) Ale wciąż pojawia się ten sam błąd. Czy force_insert nie jest już obsługiwany w Django 1.3.1 lub co robię źle? – Superdooperhero