Python Django ORM:如果表A在表B中具有相同的id(FK),则从表A中选择行,如果满足以下条件,则选择A中的行:

Python Django ORM:如果表A在表B中具有相同的id(FK),则从表A中选择行,如果满足以下条件,则选择A中的行:,python,django,Python,Django,我有桌上医院和其他桌上科室。我需要根据城市进行搜索。当用户选择城市并键入科室时,应检查医院表中是否有在用户指定城市工作的医院,然后在科室表中检查是否有任何医院在用户指定科室的表中 如何使用Django ORM实现这一点 class HCSProfile(models.Model): user = models.ForeignKey('User', on_delete=models.CASCADE) fname = models.CharField(max_length=255, blan

我有桌上医院和其他桌上科室。我需要根据城市进行搜索。当用户选择城市并键入科室时,应检查医院表中是否有在用户指定城市工作的医院,然后在科室表中检查是否有任何医院在用户指定科室的表中

如何使用Django ORM实现这一点

class HCSProfile(models.Model):
  user = models.ForeignKey('User', on_delete=models.CASCADE)
  fname = models.CharField(max_length=255, blank=True, null=True)
  lname = models.CharField(max_length=255, blank=True, null=True)        
  city = models.CharField(max_length=255, blank=True, null=True)

class HCspeciality(models.Model):
  hospital = models.CharField(max_length=255, blank=True, null=True)
  speciality = models.CharField(max_length=255, blank=True, null=True)
  hospital_id = models.ForeignKey('HCSProfile', on_delete=models.CASCADE)

我想你在找这样的东西:

# filter departments to only include hospitals available in the selected city
result = HCspeciality.objects.filter(hospital__city=user_city)
# further filter on department name
result = result.filter(speciality=user_speciality)
当然,用从用户处收集的变量替换
user\u hospital
user\u city


请注意,使用双下划线在外键自己的字段上进行筛选
医院城市

你在哪里存储科室字段?HCspeciality表,医院在注册时添加了他们的科室,Speciality是科室,对吗?Yh,对。