Lucas Ou-Yang
Lucas Ou-Yang

Reputation: 5655

Running into issues with Django's ModelChoiceField "queryset" attribute

In django by default the form for a model foreign key is a ModelChoiceField (where you can select out of a list of all possible models). And it's possible to change these with the query set attribute, like

// in forms.py

self.fields['possible_cars'].queryset = somequeryset

But I'm in a situation where I have a list of stuff, not a queryset, and since there is no way to convert a list into a queryset, i'm not sure how to make the options for my ModelChoiceField similar to the list of models I want. (Since they take a queryset by default, i'm assuming they get a list from that query anyways, so this kinda thing should be possible).

I tried self.fields['possible_cars']._choices = mylist , but it won't work.

Any ideas guys?

Upvotes: 1

Views: 216

Answers (1)

Thierry Lam
Thierry Lam

Reputation: 46264

Assuming your field take a Car queryset, you can construct one like the following:

mylist = ['BMW', 'Lamborghini', 'Porsche']
cars = Car.objects.filter(name__in=mylist)
self.fields['possible_cars'].queryset = cars

Upvotes: 2

Related Questions