How do I filter values in a Django form using ModelForm?

后端 未结 3 1137
被撕碎了的回忆
被撕碎了的回忆 2020-12-09 03:59

I am trying to use the ModelForm to add my data. It is working well, except that the ForeignKey dropdown list is showing all values and I only want it to display the values

3条回答
  •  南方客
    南方客 (楼主)
    2020-12-09 04:37

    Here example:

    models.py

    class someData(models.Model):
        name = models.CharField(max_length=100,verbose_name="some value")
    
    class testKey(models.Model):
        name = models.CharField(max_length=100,verbose_name="some value")
        tst = models.ForeignKey(someData)
    
    class testForm(forms.ModelForm):
        class Meta:
            model = testKey
    

    views.py

    ...
    ....
    ....
        mform = testForm()
        mform.fields["tst"] = models.forms.ModelMultipleChoiceField(queryset=someData.objects.filter(name__icontains="1"))
    ...
    ...
    

    Or u can try something like this:

    class testForm(forms.ModelForm):
        class Meta:
            model = testKey
    
    def __init__(self,*args,**kwargs):
        super (testForm,self ).__init__(*args,**kwargs)
        self.fields['tst'].queryset = someData.objects.filter(name__icontains="1")
    

提交回复
热议问题