【发布时间】:2021-11-30 01:57:10
【问题描述】:
我在创建 QuerySet 时遇到了 .exclude() 的问题。
我参与的模型是:
职业
class Profession(models.Model):
profession_name = models.CharField(max_length=20)
equipment = models.ManyToManyField(Equipment, blank=True)
ability = models.ManyToManyField(Ability, blank=True)
skill = models.ManyToManyField(Skill, blank=True)
skill_advanced = models.ManyToManyField(SkillAdvanced, blank=True)
能力
class Ability(models.Model):
ability_name = models.CharField(max_length=35)
当我创建查询集时:
self.prof_abilities = Profession.objects.filter(profession_name="Acolyte").values('ability')
我明白了:
<QuerySet [{'ability': 2}, {'ability': 69}, {'ability': 81}, {'ability': 86}, {'ability': 23}]>
但我想排除一些值,所以我改用这个:
self.prof_abilities = Profession.objects.filter(profession_name="Acolyte").exclude(ability__in=[2, 23, 81, 86]).values('ability')
但结果是一个空的 QuerySet:
<QuerySet []>.
我尝试了各种 tweeks,例如 .exclude(ability__id__in=[2, 23, 81, 86]) 或 .exclude(ability__ability_name__in=['Foo name', 'Bar name'],但都没有成功。
我是 Django 新手,所以如果这很明显,我也会感谢一些指示 在哪里可以阅读更多关于我的错误的信息。
【问题讨论】:
标签: python python-3.x django