我无法在Django中找出这个查询集的过滤器设置:
class City(models.Model):
cityname= models.CharField()
class Doctor(models.Model):
name = models.CharField()
primarycity = models.ForeignKey(City)
secondarycity = models.ForeignKey(City)
我想查询: 所有拥有“史密斯”医生的城市(小学或中学)
显而易见的事情对我不起作用:
list = City.objects.filter(doctor__name='Smith')
这只会为我提供一个主要城市列表'史密斯'。我需要Django跟随FK字段(城市和二级城市)
有人可以帮助我吗?
答案 0 :(得分:0)
您必须指定related_name
参数。像
class Doctor(models.Model):
name = models.CharField()
primarycity = models.ForeignKey(City, related_name='primary_doc')
secondarycity = models.ForeignKey(City, related_name='secondary_doc')
之后你可以使用Q对象:
list = City.objects.filter(Q(primary_doc__name='Smith') | Q(secondary_doc__name='Smith'))