из списка, чтобы выбрать меню в Django - PullRequest
0 голосов
/ 12 сентября 2010

Я думал, что разобрался, но теперь мне чего-то не хватает.

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

records = Record.objects.all()

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

alist = records.values_list('columnA')

И затем я хочу передать этот список в качестве параметра в пользовательскую форму.

FilterForm(alist)

Вот моя форма

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

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

EDIT: я изменил свой 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

Ответы [ 2 ]

1 голос
/ 12 сентября 2010

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

numbers = forms.ChoiceField(list)

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

0 голосов
/ 12 сентября 2010

Вот ошибка:

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

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

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

Дополнительная литература:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...