Django ORM: Выберите строки из таблицы A, если она имеет тот же идентификатор (FK) в таблице B, где строки в A выбраны, если она удовлетворяет условию: - PullRequest
1 голос
/ 24 февраля 2020

У меня есть столовые больницы и другие столовые отделения. Мне нужно сделать операцию поиска по городу. Когда пользователь выбирает город и вводит отдел, он должен проверить наличие больниц в таблице больниц, работающих в указанном пользователем городе, а затем проверить в таблице отделения, есть ли какая-либо из этих больниц в таблице с указанным пользователем отделом.

Как мне сделать это с 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)

1 Ответ

1 голос
/ 24 февраля 2020

Я думаю, вы ищете что-то вроде этого:

# 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_hospital и user_city переменными, которые вы собираете у пользователя.

Обратите внимание на использование двойного подчеркивания для фильтрации по собственному полю внешнего ключа hospital__city.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...