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

При запросе модели школы я могу получить район, мой вопрос в том, можно ли также получить провинцию без добавления ее в качестве внешнего ключа в модели школы? Если да, то как мне этого добиться?

Варианты использования следующие:

  1. Запрос школы со всеми ее свойствами, включая район и провинцию.

With: School.objects.all или School.objects.get/filter Я могу получить все школы и детали района, но я не знаю, как достичь модели провинции.

  1. Получить все школы в округе

С: School.objects.filter(district=x) Я могу получить школы в районе без проблем здесь.

  1. Получить все школы в провинции

Допустим, у меня есть идентификатор провинции 2, как мне получить все школы в провинции 2?

Спасибо за любую оказанную помощь.

На случай, если кто-то столкнется с подобной проблемой, вот что я использую:

data = School.objects.filter(district__province__id=2)

В параметрах фильтра, district__province__x дает мне доступ к модели Province, и я могу фильтровать по любому столбцу в этой модели.

Вернуться на верх