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)