To create a dynamic choice field with Python Django, we can set the fields
to a queryset value.
For instance, we write
class WaypointForm(forms.Form):
def __init__(self, user, *args, **kwargs):
super(waypointForm, self).__init__(*args, **kwargs)
self.fields['waypoints'] = forms.ChoiceField(
choices=[(o.id, str(o)) for o in Waypoint.objects.filter(user=user)]
)
to create the WaypointForm
form.
In the __init__
method, we set self.fields['waypoints']
to a ChoiceField
.
And we populate the choices by setting the choices
argument to a list of values that we get from the Waypoint.objects.filter(user=user)
queryset.