Заполните данные поля формы 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