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



我有餐桌医院和其他餐桌部门。我需要做一个基于城市的搜索操作。当用户选择城市并键入科室时,应在医院表中检查在用户指定城市工作的医院,然后在科室表中检查这些医院中是否有用户指定科室的医院。

如何使用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_hospitaluser_city

请注意使用双下划线来筛选外键自己的字段hospital__city

最新更新