Мне нужен доступ к данным модели ForeignKey, но я не знаю, как это сделать. Я написал это как простой пример того, что хочу сделать:

class Model1(models.Model):
name = models.CharField(max_length=100)
phone_number = models.BigIntegerField()

class Model2(models.Model):
model1 = models.ForeignKey(Model1, on_delete=models.CASCADE)
name = model1.name
phone_number = model1.phone_number

Это дает мне следующее сообщение об ошибке:

AttributeError: 'ForeignKey' object has no attribute 'name'
0
B3CTOR 27 Ноя 2021 в 15:36

1 ответ

Лучший ответ

Если вы напишете model1.name, его цель - получить атрибут объекта ForeignKey, а не объект, на который ссылается ForeignKey модели объекта .

Вы можете определить два свойства для получения .name и .phone_number связанного объекта Model1:

class Model2(models.Model):
    model1 = models.ForeignKey(Model1, on_delete=models.CASCADE)
    
    @property
    def name(self):
        return self.model1.name
    
    @property
    def phone_number(self):
        return self.model1.phone_number
1
Willem Van Onsem 27 Ноя 2021 в 15:42