我想知道是否有一种方法可以让我根据ManyToManyField字段进行过滤。我知道有一个
__in
过滤器然而,这个过滤器似乎需要一个id,而我没有id(我可以得到id,但我想知道没有它是否可能)。
这就是我的模型的样子
class modelEmployee(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
title = models.CharField(max_length=200, unique=False, blank=False, null=True)
skills = models.ManyToManyField(modelSkill, blank=True)
class modelJob(models.Model):
skills = models.ManyToManyField(modelSkill,blank=True)
title = models.CharField(max_length=200, unique=False,blank=False,null=True)
这是多对多的模型
class modelSkill(models.Model):
skill_description = models.CharField(max_length=50, unique=True)
现在我有了一个如下的列表
skillList = [SkillA,SkillB,SkillC...] #Description field
目前我不可能做到这一点
modelJob.objects.filter(skills__in=skillList)
我不能做上述操作的原因是因为skills_uuin需要一个包含技能id号的列表,而不是其他技能领域的列表。我的问题是,我如何告诉skills____;我所传递的列表是
skill_description
的
modelSkill
而不是身份证?
更新:
如果我这样做
queryset_list = modelEmployee.objects.filter(skills___skill_description__in=skill_filter)
我得到了错误
raise FieldError('Related Field got invalid lookup: {}'.format(lookups[0]))
django.core.exceptions.FieldError: Related Field got invalid lookup: _skill_description