首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django过滤器queryset __in=list用于* queryset中的每个*项

Django过滤器queryset __in=list用于* queryset中的每个*项
EN

Stack Overflow用户
提问于 2021-08-18 15:10:34
回答 1查看 374关注 0票数 2

假设我有以下模型

代码语言:javascript
复制
class Offer(models.Model):
    skills_required = models.ManyToManyField(Skill, blank=True)

class Skill(models.Model)
    title = models.CharField(max_length=80, primary_key=True)

class UserProfile(models.Model):
    skills = models.ManyToManyField(Skill)

如何使用Offer.objects实例过滤UserProfile,使剩余报价的skills_required成为user_profile.skills的子集

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-18 15:22:52

我们可以计算该服务所需技能的数量,并检查该技能的数量是否等于该用户配置文件的技能数量:

代码语言:javascript
复制
from django.db.models import Count, F, Q

Offer.objects.alias(
    req_skill=Count('skills_required', distinct=True),
    skills=Count(
        'skills_required',
        filter=Q(skills_required__userprofile=my_userprofile),
        distinct=True
    )
).filter(
    req_skill=F('skills')
)

对于django-3.2之前的Django,您应该使用[Django-doc]而不是[Django-doc]

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68834978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档