Как объединить две пользовательские таблицы 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"
прошу помощи!