django表单queryset多个相同的字段过滤器

时间:2018-01-19 10:31:55

标签: python 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) 

1 个答案:

答案 0 :(得分:2)

您当前的查询是在尝试查找部门编号为18 19 20的员工。如果department是外键,那么这是不可能的

您可以使用Q()个对象查找部门ID为 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])