Tôi có một lỗi sử dụng get_or_create
trên queryset:Django QuerySet get_or_create - TypeError - save() có một cuộc tranh cãi từ khóa bất ngờ 'sử dụng'
TypeError tại ...
save()
có một cuộc tranh cãi từ khóa bất ngờ 'sử dụng'
Đây là quan điểm của tôi:
class MailingListSubscriptionForm(forms.ModelForm):
"""Form for subscribing to a mailing list"""
# Notes : This form will not check the uniquess of
# the 'email' field, by defining it explictly and setting
# it the Meta.exclude list, for allowing registration
# to a mailing list even if the contact already exists.
# Then the contact is always added to the subscribers field
# of the mailing list because it will be cleaned with no
# double.
email = forms.EmailField(label=_('Email'), max_length=75)
def save(self, mailing_list):
data = self.cleaned_data
contact, created = Subscriber.objects.get_or_create(
email__exact=data['email'], defaults={'email': data['email']}
)
mailing_list.subscribers.add(contact)
mailing_list.unsubscribers.remove(contact)
class Meta:
model = Subscriber
fields = ('email',)
và đây là toàn bộ traceback:
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/home/newsletter/
Django Version: 1.4.3
Python Version: 2.7.3
Installed Applications:
('jmb.core',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'south',
'easy_thumbnails',
'web',
'sccore.profiles',
'django.contrib.admin',
'django_extensions',
'cms',
'mptt',
'menus',
'south',
'sekizai',
'cms.plugins.flash',
'cms.plugins.googlemap',
'cms.plugins.link',
'cms.plugins.snippet',
'cms.plugins.text',
'cms.plugins.twitter',
'filer',
'cmsplugin_filer_file',
'cmsplugin_filer_folder',
'cmsplugin_filer_image',
'cmsplugin_filer_teaser',
'cmsplugin_filer_video',
'easy_thumbnails',
'tinymce',
'debug_toolbar',
'django_extensions')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'jmb.core.middleware.thread_local.ThreadLocals',
'cms.middleware.multilingual.MultilingualURLMiddleware',
'cms.middleware.page.CurrentPageMiddleware',
'cms.middleware.user.CurrentUserMiddleware',
'cms.middleware.toolbar.ToolbarMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware')
Template error:
In template /home/luca/src/jmb-siti/www.acomea.it/web/templates/bootstrap_full.html, error at line 12
save() got an unexpected keyword argument 'using'
2 : {% load cms_tags menu_tags sekizai_tags %}
3 :
4 : {% block central_content_left %}{% endblock %}
5 : {% block central_content %}
6 : <div class="span9 central_content">
7 : <div class="row-fluid">
8 : {% block central_content_central %}
9 : {% block central_content_central_top %}{% endblock %}
10 : {% block central_content_central_middle %}
11 : <div class="span12 central_content_central_middle"><div class="item6 height5">
12 : {% placeholder central_content_central_middle %}
13 : </div></div>
14 : {% endblock %}
15 : {% block central_content_central_bottom %}{% endblock %}
16 : {% endblock %}
17 : </div>
18 : </div>
19 : {% endblock %}
20 : {% block central_content_right %}{% endblock %}
21 :
22 : {% block central_right %}{% endblock %}
Traceback:
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/home/luca/.buildout/eggs/django_cms-2.3.3-py2.7.egg/cms/views.py" in details
113. return render_to_response(template_name, context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/shortcuts/__init__.py" in render_to_response
20. return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/loader.py" in render_to_string
171. return t.render(Context(dictionary))
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/base.py" in render
140. return self._render(context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/test/utils.py" in instrumented_test_render
62. return self.nodelist.render(context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/base.py" in render
823. bit = self.render_node(node, context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/debug.py" in render_node
74. return node.render(context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/loader_tags.py" in render
123. return compiled_parent._render(context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/test/utils.py" in instrumented_test_render
62. return self.nodelist.render(context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/base.py" in render
823. bit = self.render_node(node, context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/debug.py" in render_node
74. return node.render(context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/loader_tags.py" in render
123. return compiled_parent._render(context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/test/utils.py" in instrumented_test_render
62. return self.nodelist.render(context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/base.py" in render
823. bit = self.render_node(node, context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/debug.py" in render_node
74. return node.render(context)
File "/home/luca/.buildout/eggs/django_classy_tags-0.3.4.1-py2.7.egg/classytags/core.py" in render
102. return self.render_tag(context, **kwargs)
File "/home/luca/.buildout/eggs/django_sekizai-0.6.1-py2.7.egg/sekizai/templatetags/sekizai_tags.py" in render_tag
75. rendered_contents = nodelist.render(context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/base.py" in render
823. bit = self.render_node(node, context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/debug.py" in render_node
74. return node.render(context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/loader_tags.py" in render
62. result = block.nodelist.render(context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/base.py" in render
823. bit = self.render_node(node, context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/debug.py" in render_node
74. return node.render(context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/loader_tags.py" in render
62. result = block.nodelist.render(context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/base.py" in render
823. bit = self.render_node(node, context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/debug.py" in render_node
74. return node.render(context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/loader_tags.py" in render
62. result = block.nodelist.render(context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/base.py" in render
823. bit = self.render_node(node, context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/debug.py" in render_node
74. return node.render(context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/loader_tags.py" in render
62. result = block.nodelist.render(context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/base.py" in render
823. bit = self.render_node(node, context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/debug.py" in render_node
74. return node.render(context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/loader_tags.py" in render
62. result = block.nodelist.render(context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/base.py" in render
823. bit = self.render_node(node, context)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/template/debug.py" in render_node
74. return node.render(context)
File "/home/luca/.buildout/eggs/django_classy_tags-0.3.4.1-py2.7.egg/classytags/core.py" in render
102. return self.render_tag(context, **kwargs)
File "/home/luca/.buildout/eggs/django_cms-2.3.3-py2.7.egg/cms/templatetags/cms_tags.py" in render_tag
235. content = get_placeholder_content(context, request, page, name, inherit)
File "/home/luca/.buildout/eggs/django_cms-2.3.3-py2.7.egg/cms/templatetags/cms_tags.py" in get_placeholder_content
154. content = render_placeholder(placeholder, context, name)
File "/home/luca/.buildout/eggs/django_cms-2.3.3-py2.7.egg/cms/plugin_rendering.py" in render_placeholder
126. content.extend(render_plugins(plugins, context, placeholder, processors))
File "/home/luca/.buildout/eggs/django_cms-2.3.3-py2.7.egg/cms/plugin_rendering.py" in render_plugins
80. out.append(plugin.render_plugin(context, placeholder, processors=processors))
File "/home/luca/.buildout/eggs/django_cms-2.3.3-py2.7.egg/cms/models/pluginmodel.py" in render_plugin
171. context = plugin.render(context, instance, placeholder_slot)
File "/home/luca/src/jumbo2/jmb.newsletter/jmb/newsletter/cms/plugins.py" in render
27. form.save(instance.mailing_list)
File "/home/luca/src/jumbo2/jmb.newsletter/jmb/newsletter/forms.py" in save
27. email__exact=data['email'], defaults={'email': data['email']}
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/db/models/manager.py" in get_or_create
134. return self.get_query_set().get_or_create(**kwargs)
File "/home/luca/.buildout/eggs/Django-1.4.3-py2.7.egg/django/db/models/query.py" in get_or_create
452. obj.save(force_insert=True, using=self.db)
Exception Type: TypeError at /home/newsletter/
Exception Value: save() got an unexpected keyword argument 'using'
Giải pháp của bạn đã thực hiện thủ thuật cho tôi, cảm ơn rất nhiều! –