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

#python #django #django-models #many-to-many #manytomanyfield

#python #django #django-модели #многие ко многим #manytomanyfield

Вопрос:

Я работаю с моделями из разных приложений в Django.

У меня есть два приложения. Один называется partners и другие контракты.

В партнерах приложения, внутри файла models.py , я определил эту модель:

 class Partner(models.Model):
    cpf = models.CharField(max_length=11, null=False, blank=True)
  

В контрактах приложения, внутри файла models.py , я определил эту модель:

 from partners.models import Partner

class Contract(models.Model):
    ...
    indications = models.ManyToManyField(Partner, through='ContractIndication', related_name='indications')

class ContractIndication(models.Model):
    contract = models.ForeignKey(Contract, on_delete=models.CASCADE)
    partner = models.ForeignKey(Partner, on_delete=models.CASCADE)
    payed = models.CharField(max_length=1, choices=YES_NO, null=False, blank=True, default='N')
  

Однако в файле views.py из приложения partners я не могу получить доступ ко всем контрактам, с которыми связан партнер, используя это:

 partner = Partner.objects.get(...)
indications = partner.indications.all()
  

Я уже использую атрибут related_name из контракта. Что я делаю не так?

Комментарии:

1. Вы создали и запустили все свои миграции? Работает ли это, если вы используете partner.contrato_set.all() ?

2. Да, это работает, используя ваше предложение. Но почему это не работает с использованием related_name?