Можете ли вы горизонтально получить доступ к другим полям через "related_name" в Django?

У меня есть теоретический вопрос, который я должен решить, чтобы предоставить решение. Я читаю кусок кода, но что-то мне не понятно, как он обращается к полям через обратный поиск с "related_name". Я делюсь с вами важными частями кода, чтобы объясниться. Я искал больше информации, связанной с этим, и укрепил свои знания о "related_name", но не нашел ничего, что помогло бы мне.

class Account(models.Model):
    country = models.ForeignKey(
        'Country',
        on_delete=models.PROTECT,
        null=True,
        blank=True
    )

class Stage(models.Model):
    step_name = models.CharField(max_length=100)
    n_step = models.PositiveIntegerField(null=True, blank=True)

class Status(models.Model):
    TIPOS_STATUS = {
        ('open', 'open'),
        ('open_staged', 'open_staged'),
        ('closed_won', 'closed_won'),
        ('closed_lost', 'closed_lost')
    }

    name = models.CharField(choices=TIPOS_STATUS, max_length=50)

class AssignedAccount(models.Model):
    account = models.ForeignKey(
        Account,
        on_delete=models.CASCADE,
        null=True,
        blank=True,
        related_name='assignation',
    )
    status = models.ForeignKey(Status, on_delete=models.PROTECT)
    stage = models.ForeignKey(
        Stage,
        null=True,
        blank=True,
        on_delete=models.PROTECT,
    )

Дело в том, что я знаю, что могу сделать что-то вроде следующего с related_name и выполнить обратный поиск, чтобы увидеть все назначенные счета по отношению к счету:

account = Account.objects.get(pk=1)
assigned_accounts = account.assignation.all()

Но теперь посмотрим, что они сделают с FK между этими двумя в этом DF:

accounts = Account.objects.all()

accounts_dataframe = pd.DataFrame(
            list(
                accounts.values(
                    'pk',
                    'country__two_letter_code',
                    'assignation__stage__n_step',
                    'assignation__status__name'
                )
            )
        )

Как если бы они пытались получить доступ через обратный поиск с "назначением" к другим полям "стадия" и "статус" модели "НазначенныйСчет" (которая в то же время имеет другие FKs). Но ведь так делать нельзя? В общем, я этого не понимаю, и любая помощь или разъяснения по этому поводу были бы просто великолепны. Надеюсь, я ясно попытался выразить свое непонимание этого куска кода. Заранее спасибо!

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