2011-01-20 5 views
7

Я пытаюсь заполнить поле формы данными из объекта Db. Как настроить форму, представление и модель для заполнения поля этими данными?Заполнить данные поля формы Django данными Db

Цель состоит в том, чтобы позволить пользователю выбирать только данные, запрашиваемые у объекта. Ex. На мероприятии играют группы, пользователь выбирает свою любимую группу из тех, что присутствуют на мероприятии.

Я пробовал просматривать документы для form.data - но, похоже, не могу найти то, что я ищу.

Спасибо!

ответ

4

Предположив модель событий группы, как много-2-Many ключ, расположение форм и представлений будет выглядеть следующим образом:

forms.py:

class EditEventForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(EditEventForm, self).__init__(*args, **kwargs) 
     self.fields['bands'].queryset= \ 
         Bands.objects.filter(Q(name='band1')|Q(name='band2')) 
    class Meta: 
     model = Event 

ПРИМЕЧАНИЕ: Вы должны были бы чтобы настроить выборку запроса в формах для вашего требования.

views.py:

form = EditEventForm(instance=event) 

Кроме того, в соответствии с предложением, заданной dcrodjer, идти вперед и читать текст по реализации ModelMultipleChoiceField

1

Вы можете получить немного больше обычай, передавая аргументы Форма

class SelectBandForm(forms.Form): 
def __init__(self, event, *args, **kwargs): 
    super(EditEventForm, self).__init__(*args, **kwargs) 
    self.fields['bands'] = forms.ModelChoiceField(label="Whats your favorite band?", 
       empty_label="Select a Band" , querset=Bands.objects.filter(event=event)) 

Тогда в ваших взглядах

if request.method =="POST": 
    form = SelectBandForm(event, request.POST) 
    if form.is_valid(): 
     #do stuff 
else: 
    form = SelectBandForm(event) 
    #show it 
Смежные вопросы