AttributeError at /coordinator 'Coordinator' object has no attribute 'agent'

Ожидаемый результат: Я хочу запрашивать родительские объекты, которые имеют отношение к координатору. Пожалуйста, помогите, как я могу достичь этого.

Ошибка возникает после выполнения следующего набора запросов,

user.coordinator.agent.parent_set.all()

Модели

class Coordinator(models.Model):
user = OneToOneField(User, null=True, blank=True, on_delete=models.SET_NULL) 
region = models.CharField(max_length=15, null=True, blank=True, choices=REGION)
id_no = id_no = models.CharField(max_length=150, null=False, blank=False, unique=True)
address = models.TextField(null=False, blank=False)
gender = models.CharField(max_length=20, null=False, blank=False, choices=GENDER)
created_at = models.DateTimeField(auto_now_add=True)

class Agent(models.Model):
user = OneToOneField(User, null=True, blank=True, on_delete=models.SET_NULL)
coordinator = models.ForeignKey(Coordinator, null=True, blank=True, on_delete=SET_NULL)
region = models.CharField(max_length=15, null=True, blank=True, choices=REGION)
id_no = id_no = models.CharField(max_length=150, null=False, blank=False, unique=True,)
address = models.TextField(null=False, blank=False)
gender = models.CharField(max_length=20, null=False, blank=False, choices=GENDER)
created_at = models.DateTimeField(auto_now_add=True)

class Parent(models.Model):
   agent = models.ForeignKey(Agent, null=True, blank=True, on_delete=SET_NULL)
   surname = models.CharField(max_length=150, null=False, blank=False)
   first_name = models.CharField(max_length=150, null=False, blank=False)
   other_name = models.CharField(max_length=150, null=True, blank=True)
   address = models.CharField(max_length=200, null=True, blank=True)
   region = models.CharField(max_length=15, null=True, blank=True, choices=REGION)
   dob = models.CharField(max_length=10, null=False, blank=False)

Вы не можете использовать user.coordinator.agent.parent_set.all(), потому что между coordinator и agent нет прямой связи. Вместо этого вы должны сделать следующее :

# Starting from a Coordinator
coordinator.user.agent.parent_set.all()
# Starting from a user
user.agent.parent_set.all()

Обратите внимание, что это может вызвать исключения, поскольку ваши поля OneToOneFields являются nullable.

Вам придется изменить свои модели, чтобы ваш запрос работал следующим образом :

class Agent(models.Model):
    coordinator = OneToOneField(Coordinator, null=True, blank=True, on_delete=models.SET_NULL)
    # Instead of 
    user = OneToOneField(User, null=True, blank=True, on_delete=models.SET_NULL)
Вернуться на верх