Tuesday, February 20, 2018

Re: How do I get dynamic choices to a select widget at render time?

On 20/02/2018 11:16 AM, Mike Dewhirst wrote:
> Here is an example of get_choices() output ... it comes from a method
> on the Question model.
>
>  [('A', 'A - Once?'), ('B', 'B - Twice?'), ('C', 'C - Four times?'),
> ('D', 'D - Twelve times?'), ('E', 'E - Continously as changes are
> made?')]
>
> It is available before the the answer form is instantiated ...
>
> class AnswerSingleForm(forms.ModelForm):
>
>     class Meta:
>         model = Answer
>         fields = [
>             'answer',
>             'score'
>         ]
>

This is my new form which seems to work ...

class AnswerSingleForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):

        super(AnswerSingleForm, self).__init__(*args, **kwargs)

        answer = kwargs['instance']

        choices = answer.question.get_choices()

        if len(choices) > 0:

            self.fields['answer'] = forms.ChoiceField(

                choices=choices

            )

    class Meta:

        model = Answer

        fields = [

            'answer',

            'score'

        ]









> So how do I get that set of choices into the Answer form?
>
> I can see from the docs that the form Meta class can have a widgets
> attribute for the 'answer' field. I think I need a ChoiceField widget
> so I can include the choices. I tried using __init__() in the form
> class to get the choices on board at instantiation but still couldn't
> get it going because class Meta doesn't see 'self'.
>
> Thanks for any help
>
> Stumped
>

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/8a7fbe08-214e-745e-15ee-89303ea7a774%40dewhirst.com.au.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment