2012-02-28 3 views
1

모델의 m2m 관계를 저장하려고합니다. 이것은 아래 보이는 모델에서 끝납니다. 이해가 오류가 있습니다 : force_insert는 인수와 kwargs로 모두 전달 된 것 같다 나에게 그래서Django save() 오류

save() got multiple values for keyword argument 'force_insert'

. 그러나 pdb를 사용하여 값을 검사 할 때 args =()kwargs = {'force_insert': True, 'using': 'default'}이 표시됩니다. 그래서 force_insert는 args에 존재하지 않습니다. 왜 이것이 잘못 됐는지 모든 아이디어?

class TaggedItem(GenericTaggedItemBase, TaggedItemBase): 
    """ 
    Also caches team info when available. 
    """ 
    team = models.ForeignKey(Team, null=True) 

    def save(self, *args, **kwargs): 
     if hasattr(self.content_object, 'team'): 
      self.team = self.content_object.team 

     import pdb; pdb.set_trace() 

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

    class Meta: 
     verbose_name = _("Tagged Item") 
     verbose_name_plural = _("Tagged Items") 

EDIT : 예상대로 kwargs에서 'force_insert'를 삭제하면 저장이 작동합니다.

스택 트레이스 : super

D:\Stamkracht\v3\v3_env\lib\site-packages\django\core\handlers\base.py in get_response 
         response = callback(request, *callback_args, **callback_kwargs) ... 

D:\Stamkracht\v3\backbone\utils.py in _decorated 
     return view_func(request, *args, **kwargs) ... 

D:\Stamkracht\v3\v3_env\lib\site-packages\annoying\decorators.py in wrapper 
      output = function(request, *args, **kwargs) ... 

D:\Stamkracht\v3\apps\blog\views.py in create 
    return _handle_blog_form(request, blog) ... 

D:\Stamkracht\v3\apps\blog\views.py in _handle_blog_form 
      form.save_m2m() # Needed for tags! ... 

D:\Stamkracht\v3\v3_env\lib\site-packages\django\forms\models.py in save_m2m 
       f.save_form_data(instance, cleaned_data[f.name]) ... 

D:\Stamkracht\v3\apps\taggit\managers.py in save_form_data 
     getattr(instance, self.name).set(*value) ... 

D:\Stamkracht\v3\apps\taggit\utils.py in inner 
     return func(self, *args, **kwargs) ... 

D:\Stamkracht\v3\apps\taggit\managers.py in set 
     self.add(*tags) ... 

D:\Stamkracht\v3\apps\taggit\utils.py in inner 
     return func(self, *args, **kwargs) ... 

D:\Stamkracht\v3\apps\taggit\managers.py in add 
      self.through.objects.get_or_create(tag=tag, **self._lookup_kwargs()) ... 

D:\Stamkracht\v3\v3_env\lib\site-packages\django\db\models\manager.py in get_or_create 
     return self.get_query_set().get_or_create(**kwargs) ... 

D:\Stamkracht\v3\v3_env\lib\site-packages\django\db\models\query.py in get_or_create 
       obj.save(force_insert=True, using=self.db) ... 

D:\Stamkracht\v3\apps\taggit\models.py in save 
     super(TaggedItem, self).save(self, *args, **kwargs) ... 
+0

여기서 코드에서 m2m 관계는 정확히 무엇입니까? 스택 트레이스를 붙여 넣을 수 있습니까? – Jingo

+0

m2m은 아주 멀리 떨어져 있습니다. stacktrace를 추가하겠습니다! –

답변

1

당신은 전화가 꺼져 있습니다. 메서드에 self을 전달하면 안됩니다. 이미 super에 해당됩니다. 대신 다음을 사용하십시오 :

super(TaggedItem, self).save(*args, **kwargs) 
+0

아! 고마워. 나는이 모델에 대한 코드를 작성하지 않았기 때문에 나는 그것이 내 오류라고 가정했다. 필자가 작성한 다른 save() 메소드와 비교했을 것이다. –

+1

모든 질문;). –

관련 문제