je reçois l'erreur suivante lors de l'instanciation un formulaire Django avec un constructeur overriden:erreur Django: obtenu plusieurs valeurs pour argument mot-clé
__init__() got multiple values for keyword argument 'collection_type'
La fonction __init__()
(ci-dessous) est exactement comme écrit cela, mais avec # code
remplacé par ma logique. À partir de là, je substitue essentiellement le constructeur du formulaire (qui est un ModelForm).
def __init__(self, collection_type, user=None, parent=None, *args, **kwargs):
# code
super(self.__class__, self).__init__(*args, **kwargs)
L'appel qui crée l'erreur est montré ici:
form = CreateCollectionForm(
request.POST,
collection_type=collection_type,
parent=parent,
user=request.user
)
Je ne vois aucune raison pour laquelle l'erreur est popping up.
EDIT: Voici le code complet pour le constructeur
def __init__(self, collection_type, user=None, parent=None, *args, **kwargs):
self.collection_type = collection_type
if self.collection_type == 'library':
self.user = user
elif self.collection_type == 'bookshelf' or self.collection_type == 'series':
self.parent = parent
else:
raise AssertionError, 'collection_type must be "library", "bookshelf" or "series"'
super(self.__class__, self).__init__(*args, **kwargs)
EDIT: Stacktrace
Environment:
Request Method: POST
Request URL: http://localhost:8000/forms/create_bookshelf/hello
Django Version: 1.1.1
Python Version: 2.6.1
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'libraries',
'users',
'books',
'django.contrib.admin',
'googlehooks',
'registration']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware')
Traceback:
File "/Library/Python/2.6/site-packages/django/core/handlers/base.py" in get_response
92. response = callback(request, *callback_args, **callback_kwargs)
File "/Library/Python/2.6/site-packages/django/contrib/auth/decorators.py" in __call__
78. return self.view_func(request, *args, **kwargs)
File "/Users/marcus/Sites/marcuswhybrow.net/autolib/libraries/forms.py" in create_collection
13. form = CreateCollectionForm(request.POST, collection_type=collection_type, user=request.user)
Exception Type: TypeError at /forms/create_bookshelf/hello
Exception Value: __init__() got multiple values for keyword argument 'collection_type'
... donc vous êtes sûr que ce n'est pas la section #code que vous avez omise? Plus précisément ce que vous faites avec collection_type? – EMiller
J'ai ajouté le code complet des constructeurs. –
Quel est le type de l'erreur? Pourriez-vous poster l'ensemble de la pile? – gruszczy