Как объединить две пользовательские таблицы m2m - Django

У меня есть следующее:

class Primera(models.Model):
    name = models.CharField(_("name"), max_length=50)

    def __str__(self) -> str:
        return self.name


class PrimeraSegunda(models.Model):
    primera = models.ForeignKey(Primera, verbose_name=_("primera"), on_delete=models.CASCADE, related_name='primera_segunda_pri')
    segunda = models.ForeignKey('Segunda', verbose_name=_("segunda"), on_delete=models.CASCADE, related_name='primera_segunda_seg')
    amount = models.DecimalField(_("Amount"), max_digits=6, decimal_places=2, default=0)
    created_at = models.DateTimeField(_("Created at"), auto_now_add=True)


class Segunda(models.Model):
    name = models.CharField(_("name"), max_length=50)
    primera = models.ManyToManyField(Primera, through=PrimeraSegunda, verbose_name=_("Clase Primera"), related_name='segundas')

    def __str__(self) -> str:
        return self.name


class SegundaTercera(models.Model):
    segunda = models.ForeignKey(Segunda, verbose_name=_("segunda"), on_delete=models.CASCADE, related_name='segunda_tercera_seg')
    tercera = models.ForeignKey('Tercera', verbose_name=_("tercera"), on_delete=models.CASCADE, related_name='segunda_tercera_ter')
    amount = models.DecimalField(_("Amount"), max_digits=6, decimal_places=2, default=0)
    created_at = models.DateTimeField(_("Created at"), auto_now_add=True)


class Tercera(models.Model):
    name = models.CharField(_("name"), max_length=50)
    segunda = models.ManyToManyField(Segunda, through=SegundaTercera, verbose_name=_("Clase Segunda"), related_name='terceras')

    def __str__(self) -> str:
        return self.name

Я хочу иметь возможность соединить обе пользовательские таблицы m2m, чтобы иметь доступ к их полям, а также выполнять вычисления с полями "сумма" в обеих таблицах. Ниже вы найдете эквивалент sql-запроса:

select  st.*
        , ps.*
from    test_app_segundatercera as st
join    test_app_primerasegunda as ps on st.segunda_id = ps.segunda_id
where   st.tercera_id = 1

Пока что у меня есть что-то вроде этого:

obj1 = PrimeraSegunda.objects.filter(segunda__segunda_tercera_seg__tercera=1).select_related()

Но я не могу получить доступ к полю в "SegundaTercera"

прошу помощи!

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