ModelForm в шаблоне с сгруппированным полем выбора - PullRequest
0 голосов
/ 12 декабря 2011

У меня есть поле сгруппированной категории.Проблема в том, что я создал форму поиска, но когда я пытаюсь представить форму пользователю в шаблоне, происходит ошибка.

models.py

MEDIA_CHOICES = (
    ('Audio', (
        ('vinyl', 'Vinyl'),
        ('cd', 'CD'),
    )
    ),
    ('Video', (
        ('vhs', 'VHS Tape'),
        ('dvd', 'DVD'),
    )
    ),
    ('unknown', 'Unknown'),
)

category = models.CharField(max_length=20, choices=MEDIA_CHOICES, verbose_name=_(u'Category'))

forms.py (поиск)

class SearchingForm(forms.Form):

    "Search Box"
    search = forms.CharField(max_length=100, required=False, label=(_(u'Search')))

    music_kind = forms.MultipleChoiceField(choices=MEDIA_CHOICES, required=False,
                                        label=(_(u'Kind')),    
                                        widget=forms.CheckboxSelectMultiple(),
                                        )

template.html

    {{ form.search }}
    {{ form.place_kind }}

Я показываю форму дляпользователь, как это, проблема заключается в том, что когда я рендеринг с браузером, у меня есть что-то вроде этого (в каждой строке, у него есть флажок):

(('vinyl', 'Vinyl'), ('cd', 'CD'))
(('vhs', 'VHS Tape'), ('dvd', 'DVD'))
Unknown

Я удалил 'widget = forms.CheckboxSelectMultiple () «Атрибут идет правильно, но у меня нет флажков.Итак, как я могу сделать это с полями флажок?

Ответы [ 2 ]

1 голос
/ 12 декабря 2011

Я не уверен, но мне интересно, предназначены ли группы выбора только для полей выбора (не для флажков).

1 голос
/ 12 декабря 2011

Я думаю, что здесь есть несоответствие типов данных.Вы хотите хранить несколько значений в одном CharField.Конечно, вы можете сохранить в нем словарь пар ключ-значение, но тогда вам придется разбирать его обратно на выборки, и это огромная боль.

Я бы переместил ваш MEDIA_CHOICES в таблицу базы данныхи затем в вашей SearchingForm вы можете сделать CheckboxSelectMultiple, и форма будет вести себя как положено.

...