Фильтрация по трем таблицам с использованием django ORM - PullRequest
0 голосов
/ 05 июля 2019

У меня есть 3 модели django, где у второго есть внешний ключ к первому, а у третьего - внешний ключ к первому.Например:

    NewRegistration Model

    class NewRegistration(models.Model):
            registration_date = models.DateField()
            ward_no = models.ForeignKey(system_settings.models.Wardno)
            latitude = models.DecimalField(decimal_places=16, max_digits=30)
            longitude = models.DecimalField(decimal_places=16, max_digits=30)
            is_forwarded = models.BooleanField(default=False)
    Landowner Model

    class Landowner(models.Model):
        lo_address_roadname_en = models.TextField(max_length=100, null=True, blank=True)
        reg = models.ForeignKey(NewRegistration)
    Application  model

    class Application(models.Model):
        building_storey = models.IntegerField(blank=True, null=True, default=0)
        reg = models.ForeignKey(NewRegistration) 

Я хочу посчитать данные таблицы приложения на основе no_of_storey, имеющего определенный lo_address_roadname_en из модели Landowner и определенный ward_no из NewRegistration Modelи имея определенную дату регистрации из NewRegistration Model, я попробовал вот так.

 building_storey = Application.objects.filter(reg__ward_no=ward_no).filter(reg__registration_date__gte=start_date,reg__registration_date__lte=end_date).values('building_storey').annotate(Count('building_storey'))
            context['building_storey'] = building_storey

Как я могу отфильтровать из трех таблиц?Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 05 июля 2019
NewRegistration.objects.filter(
      registration_date__gt=${date},
      Landowner__lo_address_roadname_en=${lo_address_value},
      ward_no=${ward_no},
).values('Application__building_storey')

Это способ фильтрации значений из 3 таблиц.

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