Заполните данные поля формы Django данными БД

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

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

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

спасибо!

2 ответов


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

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

Примечание: вам нужно будет настроить выборку queryset в формах для вашего требования.

views.py:

form = EditEventForm(instance=event)

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


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

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