Django __str__赋予对象外键没有属性错误

时间:2018-06-05 04:00:57

标签: django foreign-keys

所以,我不确定为什么会失败。我有一张带有结算资料的型号卡。然后我在它上面定义了一个 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 :(得分:2)

您应该在课程中使用.而不是__

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

related fields access的双下划线语法仅在django queryset中使用,但在普通的python代码中,您应该使用.来访问对象的attribute