我正在尝试根据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)
答案 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])