filtered ModelChoiceField queries

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
class MyModelForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(MyModelForm, self).__init__(*args, **kwargs)
        if self.instance:
            self.fields['myfield'].queryset = \
                MyOtherModel.objects.filter(
                    Q(active=True)|Q(pk=self.instance.myfield_id))

    class Meta:
        model = MyModel

More like this

  1. CustomChoiceField, Selectable label field version of ModelChoiceField by mauro 6 years, 1 month ago
  2. Changing queryset of a ModelChoiceField by mimog 2 years, 9 months ago
  3. Lazy options on ModelForm fields - like setting a ModelChoiceField queryset from the view by jpic 5 years, 3 months ago
  4. Class ModelInfo for show object info by marinho 5 years, 9 months ago
  5. Reorder fields directly in the ModelForm by HM 5 years, 11 months ago

Comments

aaronfay (on March 4, 2008):

Thanks for this Rob, I was just trying to figure this out today...

#

mihasya (on September 19, 2010):

Much cleaner than the hack I was using for this. Thanks!

#

(Forgotten your password?)