Как найти количество пациентов и больниц в городе, используя значения (group by) в django
Я пытаюсь найти количество пациентов и больниц в городе: например:
пациенты: 13, больница: A, город: Лондон
пациенты: 20, больница: B, город: Нью-Касл
вот мой models.py
class City(models.Model):
name = models.CharField(max_length=150)
def __str__(self):
return self.name
class Hospital(models.Model):
name = models.CharField(max_length=150)
city = models.ForeignKey(City, on_delete=models.CASCADE, related_name="hospital")
def __str__(self):
return self.name
class Patient(models.Model):
name = models.CharField(max_length=150)
city = models.ForeignKey(City, on_delete=models.CASCADE, related_name="patients")
hospital = models.ForeignKey(Hospital, on_delete=models.CASCADE, related_name="patients", blank=True, null=True)
вот мой запрос:
City.objects.values('name').annotate(patients_no=Count('patients__pk'),hospitals_no=Count('hospital__pk'))
но он суммирует количество пациентов с количеством больниц! есть ли способ достичь этого, пожалуйста.
мне нужно вернуть количество больниц в городе и количество пациентов в больнице, примечание: меня не волнует название больницы
Заранее спасибо.
Значит, вы хотите получить количество больниц в каждом городе, а также количество пациентов на одну больницу? Я думаю, вам следует сделать два разных запроса, поскольку это два разных несвязанных результата, если я правильно понял ваши намерения.
Что-то вроде
nb_patients_per_hospital = Hospital.objects.annotate(Count('patients__pk'))
nb_hospitals_per_city = City.objects.annotate(Count('hospitals__pk'))