Django TemplateSyntaxError: слишком много значений для распаковки - PullRequest
4 голосов
/ 17 января 2010

Я работаю с формой Django, и у меня есть поле выбора. Я думаю, что проблема может заключаться в том, что выбор выбирается динамически, и сейчас есть только одно значение. Я получаю TemplateSyntaxError: too many values to unpack. Некоторые другие сообщения, кажется, говорят, что иметь только одно значение - это проблема, поэтому я настроил свою функцию, которая выбирает варианты, и изменил ее, чтобы она добавлялась к пустым параметрам в начале, просто как тест. Однако это вызвало еще одну ошибку: need more than 0 values to unpack

Не совсем уверен, что с этим делать, потому что даже если есть только одно значение, мне все равно нужно его выполнить.

Форма:

class UploadFileForm(forms.Form):
    category = forms.ChoiceField(get_category_list())
    file = forms.FileField()

Категория Выбор функции:

def get_category_list():
    cats = [(), ()]
    for i in os.listdir(settings.MEDIA_ROOT + '/forms'):
        cats.append(i)
    return cats

Шаблон раздела:

<div id='addformdialog' title='Add Form'>
    {{ form.as_p }}
</div>

Вид:

def fm(request):
    if request.session['SecurityLevel'] != 2:
        return HttpResponse('Access Denied!')

    if request.method == 'POST':
        form = UpoadFileForm(request.POST, request.FILES)
        if form.is_valid():
            destination = open(settings.MEDIA_ROOT + "/forms/" + request.POST['category'] + "/" + request.FILES['file'].name, 'wb+')
            for chunk in request.FILES['file'].chunks():
                destination.write(chunk)
            destination.close()
            form = UploadFileForm()
            return render_to_response('admin/fm.html', {'categories':cats, 'form':form, 'uploadsuccess':True})
    else:
        cats = get_category_list()
        form = UploadFileForm()
        return render_to_response('admin/fm.html', {'categories':cats, 'form':form})

1 Ответ

6 голосов
/ 17 января 2010

choices должен быть повторяемым из 2-х кортежей. Вы добавляете только одну строку, что вызывает хаос из-за взаимодействия строк и кортежей (я дам вам подробности, если вам действительно интересно) Вместо этого добавьте 2 кортежа.

...