Django save() получил неожиданный аргумент ключевого слова ‘ошибка force_insert’

#django #save

#django #Сохранить

Вопрос:

Я получаю save() got an unexpected keyword argument 'force_insert' ошибку. Из этого http://groups.google.com/group/django-users/browse_thread/thread/2471efd68d56ad59 похоже, что ответ заключается в использовании:

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

Мой вопрос в том, как бы вы указали force_insert=True or force_insert=False при выполнении этого.

Мой код:

    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)
  

Ответ №1:

kwargs является dict . Установите его так же, как и любое другое значение dict.

 kwargs['force_insert'] = True
  

Комментарии:

1. Я вижу, что это работает, если вы хотите переопределить значение, но как бы вы просто указали его в качестве значения по умолчанию, как в моем коде?

2. Изменил свой код на: def save(self, * args, ** kwargs): если нет ‘force_insert’ в kwargs: kwargs[‘force_insert’] = False, если нет ‘force_update’ в kwargs: kwargs[‘force_update’] = False, если нет 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(фрагмент, self).save(* аргументы, ** kwargs) Но все еще получаю ту же ошибку. Действительно ли force_insert больше не поддерживается в Django 1.3.1 или что я делаю не так?

3. Я получаю save() получил неожиданный аргумент ключевого слова ‘force_insert’, даже если я выполняю del kwargs[‘force_insert’] вместо добавления. И это единственное место, где я что-либо делаю с force_insert в соответствии с grep.