【发布时间】:2012-03-18 00:53:22
【问题描述】:
我尝试保存模型的 m2m 关系。这最终出现在您在下面看到的模型中。我得到的错误是:
save() got multiple values for keyword argument 'force_insert'
所以对我来说,force_insert 似乎在 args 和 kwargs 中都传递了。但是,当使用 pdb 检查值时,我得到以下信息:args = () 和 kwargs = {'force_insert': True, 'using': 'default'}。所以 args 中不存在 force_insert。任何想法为什么会出错?
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")
编辑:正如预期的那样,如果我从 kwargs 中删除“force_insert”,保存确实有效。
堆栈跟踪:
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) ...
【问题讨论】:
-
您的代码中的 m2m 关系到底在哪里?你能粘贴一个堆栈跟踪吗?
-
m2m 是相当遥远的,可以这么说。我将添加一个堆栈跟踪!
标签: python django python-2.6