我正在尝试让一位具有转换所需技能的用户。这意味着用户需要具有确切的技能或更多技能。
我尝试过了。但这不适用于关系字段
User.objects.filter(skills__contains=skills)
in
运算符也不起作用,因为我需要具有所有技能的用户,而不是拥有所需技能子集的用户。
是否有一种方法可以检索被问到的技能是用户技能的子集的用户?
我正在尝试让一位具有转换所需技能的用户。这意味着用户需要具有确切的技能或更多技能。
我尝试过了。但这不适用于关系字段
User.objects.filter(skills__contains=skills)
in
运算符也不起作用,因为我需要具有所有技能的用户,而不是拥有所需技能子集的用户。
是否有一种方法可以检索被问到的技能是用户技能的子集的用户?
您可以使用__in
lookup [Django-doc],然后计算匹配数是否与skills
中的元素数相同。我们在此假设skills
包含 unique 元素(因此没有重复项)。您可以先将技能列表转换为set
,以排除重复项。
因此,我们可以使用:
from django.db.models import Count
User.objects.filter(
skills__in=skills
).annotate(
matching_skills=Count('skills')
).filter(
matching_skills=len(skills)
)