gpt4 book ai didi

python - Django 过滤查询集 __in=list for *every* 查询集中的项目

转载 作者:行者123 更新时间:2023-12-04 07:14:44 24 4
gpt4 key购买 nike

假设我有以下型号

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 的子集?

最佳答案

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

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 ,您应该使用 .annotate(…) [Django-doc]而不是 .alias(…) [Django-doc] .

关于python - Django 过滤查询集 __in=list for *every* 查询集中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68834978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com