我有这些模特:
class Skill(models.Model):
name = models.CharField(max_length=20)
class Engineer(models.Model):
name = models.CharField(max_length=20)
skill = models.ManyToManyField(Skill)
city = models.ForeignKey(City)
class City(models.Model):
city = models.CharField(max_length=20)
我有2个问题,请您抽出时间来帮助我。谢谢:))
1)我想通过一组技能过滤工程师。 让我们说我需要过滤具有这些技能的工程师[' HTML'' python'' CSS']。我怎样才能做到这一点?
2)我想通过特定领域的一组技能 AND 来过滤工程师。 让我们说我需要过滤具有这些技能的工程师[' HTML'' python',' CSS'] AND 这位工程师必须住在阿纳海姆。我怎样才能做到这一点?
答案 0 :(得分:1)
您应该阅读 queries that span relationships 部分文档。基本上查询是使用与 ForeignKey 查找相同的语法完成的。 (如果你不使用m2m through)
此外, Engineer 与 City 之间没有任何关系,如果您希望能够回答第二个问题之类的查询,则需要从工程师添加 ForeignKey 到 City 。
1
skills = Skill.objects.filter(name__in=['HTML', 'Python', 'Css'])
engineers = Engineer.objects.filter(skill__in=skills)
2
city = City.objects.get(name='Anaheim')
engineers = Engineer.objects.filter(skill__in=skills, city=city) # Considering you put a ForeignKey from Engineer to City