Django包含一个多对多字段



我正在努力让一个用户具备轮班所需的技能。这意味着用户需要具备确切的技能或更多。

我试过了。但这不适用于关系字段

User.objects.filter(skills__contains=skills)

in操作符也不起作用,因为我需要一个拥有所有技能的用户,而不是一个拥有所需技能子集的用户。

如果询问的技能是用户技能的子集,是否有方法检索用户?

您可以使用__in查找[Django-doc],然后计算匹配的数量是否与skills中的元素数量相同。我们在这里假设skills包含唯一的元素(因此没有重复(。您可以首先将技能列表转换为set以排除重复项。

因此,我们可以使用进行过滤

from django.db.models import Count
User.objects.filter(
skills__in=skills
).annotate(
matching_skills=Count('skills')
).filter(
matching_skills=len(skills)
)

相关内容

  • 没有找到相关文章

最新更新