2015-09-14 2 views
0

Используя DJANGO-умные-выбирает цепи выбирает, но метод is_valid() в представлении вызывает эту ошибку:Джанго-умные-выбирает TypeError с методом is_valid()

Traceback: 
File "/Applications/djangostack-1.7.10-0/apps/django/django_projects/freshTest/myenv/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response 
    132.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "/Applications/djangostack-1.7.10-0/apps/django/django_projects/freshTest/megaForm/views.py" in newForm 
    29.   if form.is_valid(): 
File "/Applications/djangostack-1.7.10-0/apps/django/django_projects/freshTest/clever_selects/forms.py" in is_valid 
    191.    activate(self.language_code) 
File "/Applications/djangostack-1.7.10-0/apps/django/django_projects/freshTest/myenv/lib/python3.4/site-packages/django/utils/translation/__init__.py" in activate 
    146.  return _trans.activate(language) 
File "/Applications/djangostack-1.7.10-0/apps/django/django_projects/freshTest/myenv/lib/python3.4/site-packages/django/utils/translation/trans_real.py" in activate 
    217.  if language in _DJANGO_DEPRECATED_LOCALES: 

Exception Type: TypeError at /newForm/ 
Exception Value: unhashable type: 'QueryDict' 

views.py

def newForm(request): 
if request.method == 'POST': 
    form = SimpleChainForm(request.POST) 
    if form.is_valid(): 
     print(form.cleaned_data) 
     return render(request, 'form1/current_form.html', { 
      'form': form, 
      'message': (request.POST['cat'],request.POST['columns']), 
      # 'error_message': "You didn't select a choice.", 
     }) 
#if GET or other method create blank form 
else: 
    form=SimpleChainForm() 
return render(request, 'form1/current_form.html', {'form': form}) 

В документации говорится, что django-clever-selects был «Протестирован на Django 1.4.5.», Но мне нужно использовать 1.8. Есть ли обход или исправление этой ошибки? Новичок в django, поэтому любая помощь будет оценена!

+0

Пробовал (но не сделал решить) https://github.com/filipefigcorreia/django-clever-selects/commit/4f6da07bb9e880aaaa188297f5866bcbf9c6cab6 – Liz

ответ

1

Для тех, кто еще борется с этим вопросом, следующие работал для меня:

https://github.com/filipefigcorreia/django-clever-selects/commit/4f6da07bb9e880aaaa188297f5866bcbf9c6cab6

https://github.com/PragmaticMates/django-clever-selects/issues/6

Во-первых, в clever_selects/forms.py удалить эти строки

def __init__(self, language_code=None, *args, **kwargs): 
self.language_code = language_code 

надстройку в

def __init__(self, *args, **kwargs): 
self.language_code = kwargs.get('language_code', None) 

в моем приложении, forms.py, удалить reverse_lazy

ajax_url=reverse_lazy('ajax_chained_subtypes') ==> ajax_url='/ajax/chained-subtypes/', 

порождает проблему байт строки, решаемую с: clever_selects/forms.py линией 97