Я думал, что понял, но теперь я что-то упускаю.

Сначала у меня есть QuerySet, записи

records = Record.objects.all()

Теперь я хочу превратить это в список одного из столбцов таблицы, columnA

alist = records.values_list('columnA')

А затем я хочу передать этот список в качестве параметра настраиваемой формы.

FilterForm(alist)

Вот моя форма

class FilterForm(forms.Form,list):
    numbers = forms.ChoiceField(list)

Но продолжает получать сообщение об ошибке, что объект типа не может быть повторен. Я не уверен, что проблема связана с передачей списка, потому что, когда я пытаюсь запустить этот код в оболочке, я получаю сообщение об ошибке при простом импорте FilterForm

РЕДАКТИРОВАТЬ: я изменил свой FilterForm, теперь он выглядит так.

class FilterForm(forms.Form):
    def __init__(self,numbers):
        number = forms.ChoiceField(numbers)

Так что теперь я думаю, что более очевидно, что я пытаюсь сделать, передать список в FilterForm. Однако, когда я визуализирую свой шаблон и передаю форму, поле формы не отображается. Однако сообщения об ошибке нет

РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ: Также пробовал это, видел в Интернете

class FilterForm(forms.Form):
    number = forms.ChoiceField()

    def __init__(self,numbers):
        super(FilterForm,self).__init__()
        self.fields['number'].choices=numbers

Но ошибка:

Exception Type:     TemplateSyntaxError
Exception Value:    

Caught ValueError while rendering: need more than 1 value to unpack
0
JPC 12 Сен 2010 в 02:29

2 ответа

Лучший ответ

Проблема в слове list в этой строке:

numbers = forms.ChoiceField(list)

Вам необходимо предоставить конкретный список для ChoiceField.

1
Ned Batchelder 11 Сен 2010 в 22:32

Вот ошибка:

class FilterForm(forms.Form,list):
    numbers = forms.ChoiceField(list)

Вы делаете FilterForm подклассом forms.Form и list; тогда вы ожидаете, что list будет доступен в качестве аргумента для ChoiceField.

Я думаю, вы ищете динамический ChoiceFields.

Дальнейшее чтение:

0
Community 23 Май 2017 в 12:07