Джанго заполняют форму.Поле ChoiceField из набора запросов и соотнесите выбор обратно с объектом модели
У меня есть простая форма:
class SubmissionQuickReplyForm(forms.Form):
comment_text = forms.CharField(label='', required=False, widget=forms.Textarea(attrs={'rows':2}))
Я хочу добавить форму .ChoiceField в форму, где параметры в поле ChoiceField заполняются из набора запросов.
class SubmissionQuickReplyForm(forms.Form):
comment_text = forms.CharField(label='', required=False, widget=forms.Textarea(attrs={'rows':2}))
choice = forms.ChoiceField(...)
Например, если у меня есть:
q = MyChoices.Objects.all()
Как я могу заполнить поле выбора содержимым q, чтобы, обрабатывая результаты формы в моем представлении, я мог получить объект обратно в конце?
if request.method == "POST":
form = SubmissionQuickReplyForm(request.POST)
if form.is_valid():
ch = get_object_or_404(MyChoices, pk=?)
# How do I get my object from the choice form field?
2 ответа:
Вместо этого можно использовать ModelChoiceField.
choice = forms.ModelChoiceField(queryset=MyChoices.Objects.all())
И вы можете просто позвонить
cleaned_data
Вот так.if request.method == "POST": form = SubmissionQuickReplyForm(request.POST) if form.is_valid(): ch = form.cleaned_data.get('choice')