Filter select field in ModelForm by currently logged in user

隐身守侯 提交于 2019-12-01 14:47:18
dieb

That's happening because ModelForm does not take a queryset keyword.

You can probably achieve this by setting the queryset on the view:

form = IngredienceForm()
form.fields["category"].queryset = 
        IngredienceCategory.objects.filter(user=request.user)

See related question here.

Here i have another suggestion to solve the problem. You can pass request object in your form object inside view.

In view.py just pass the request object.

form = IngredienceForm(request)

In your forms.py __init__ function also add request object

from models import  IngredienceCategory as IC

class IngredienceForm(ModelForm):
    class Meta:
        model = Ingredience
        fields = ('name', 'category')

    def __init__(self, request, *args, **kwargs):
        super(IngredienceForm, self).__init__(*args, **kwargs)
        self.fields['name'].queryset = IC.objects.filter(user=request.user)

This filter always will be applied whenever you initialize your form .

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!