I'm resorting to code in __init__ to set my select dropdown properly when
using a ModelForm with formset_factory, and wondering if there is a better
way.
I have a model that looks like this:
class Choice(models.Model):
desc = models.TextField()
begin_scene = models.ForeignKey(Scene, related_name='begin_scene')
end_scene = models.ForeignKey(Scene, related_name='end_scene')
with a corresponding ModelForm.
My view contains this:
choice_vals = scene.begin_scene.all().values()
ChoiceFormFactory = formset_factory(ChoiceForm)
formset = ChoiceFormFactory(initial=choice_vals)
When I render the form, I get a select dropdown which contains correct FK
values from Scene. However, the correct option in the dropdown is not
selected.
I did a bunch of searching and playing around and ended up with this in my
form class, which does work to set the selected option correctly.
class ChoiceForm(ModelForm):
def __init__(self, *args, **kwargs):
if 'initial' in kwargs and 'end_scene_id' in kwargs['initial']:
kwargs['initial']['end_scene'] =
kwargs['initial']['end_scene_id']
super(ChoiceForm, self).__init__(*args, **kwargs)
But I'm wondering if I missed something simpler/cleaner/more idiomatic. Did
I?
--
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.