Django 表单查询集多个相同的字段过滤器



我正在尝试根据 3 个部门 ID 过滤我的用户字段查询集。我可以过滤一个部门,但是当我尝试多次过滤时,它不起作用。谁能帮我解决这个问题?我的代码如下:

form.py

class EditProjectForm(forms.ModelForm):
    prefix = 'edit_form'
    class Meta:
        model = Model_A
        fields = '__all__'
    def __init__(self, user, *args, **kwargs):
        super(EditProjectForm, self).__init__(*args, **kwargs)
        self.fields['user'].queryset = Employee.objects.filter(department__id=18).filter(department__id=19).filter(department__id=20) 

您当前的查询正在尝试查找部门 ID 为 18、19 20 的员工。如果department是外键,则不可能。

您可以使用Q()对象查找部门 ID 为 18、19 20 的员工

Employee.objects.filter(Q(department=18)|Q(department=19)|Q(department=20))

但是,在您的情况下,最简单的解决方案是使用 __in 返回部门 ID 为 18、19 或 20 中的任何一个的员工。

Employee.objects.filter(department__in=[18, 19, 20])