Django __str__ дает объект не имеет ошибки атрибута с внешним ключом - PullRequest
0 голосов
/ 05 июня 2018

Итак, я не уверен, почему это не удается.У меня есть модель карты, которая имеет платежный профиль.Затем я определил функцию str .Поле, к которому оно относится, имеет внешний ключ к полю электронной почты другой модели.

class Card(models.Model):
    billing_profile         = models.ForeignKey(BillingProfile)
    stripe_id               = models.CharField(max_length=120)

    def __str__(self):
        return "{}".format(self.billing_profile__email)

class BillingProfile(models.Model):
    user        = models.OneToOneField(User, null=True, blank=True)
    email       = models.EmailField()

    def __str__(self):
        return self.email

Всякий раз, когда я не закомментирую метод str , я получаю 'Card' object has no attribute 'billing_profile__email'.Когда я ставлю return self.billing_profile вместо return self.billing_profile__email, это не выдает ошибку и дает мне правильное письмо.Это почему?Почему не работает billing_profile__email?

1 Ответ

0 голосов
/ 05 июня 2018

Вы должны использовать . вместо __ внутри класса:

def __str__(self):
    return "{}".format(self.billing_profile.email)

Синтаксис с двойным подчеркиванием для доступ к связанным полям используется только в наборе запросов django, но в обычном Pythonкод, который вы должны использовать . для доступа к атрибуту объекта .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...