Django Models Reverse Lookup
Я пытаюсь нормализовать свои модели в Django. У меня есть три модели, как показано ниже
from django.db import models
class Province(models.Model):
province = models.CharField(max_length=20, blank=False, null=False)
def __str__(self):
return province
class District(models.Model):
district = models.CharField(max_length=20, blank=False, null=False)
province = models.ForeignKey('Province', related_name='district_province', on_delete=models.CASCADE)
def __str__(self):
return district
class School(models.Model):
school = models.CharField(max_length=20, blank=False, null=False)
district = models.ForeignKey('District', related_name='school_district', on_delete=models.CASCADE)
def __str__(self):
return self.school
При запросе модели школы я могу получить район, мой вопрос в том, можно ли также получить провинцию без добавления ее в качестве внешнего ключа в модели школы? Если да, то как мне этого добиться?
Варианты использования следующие:
- Запрос школы со всеми ее свойствами, включая район и провинцию.
With: School.objects.all
или School.objects.get/filter
Я могу получить все школы и детали района, но я не знаю, как достичь модели провинции.
- Получить все школы в округе
С: School.objects.filter(district=x)
Я могу получить школы в районе без проблем здесь.
- Получить все школы в провинции
Допустим, у меня есть идентификатор провинции 2, как мне получить все школы в провинции 2?
Спасибо за любую оказанную помощь.
На случай, если кто-то столкнется с подобной проблемой, вот что я использую:
data = School.objects.filter(district__province__id=2)
В параметрах фильтра, district__province__x дает мне доступ к модели Province, и я могу фильтровать по любому столбцу в этой модели.