所以,我不确定为什么会失败。我有一张带有结算资料的型号卡。然后我在它上面定义了一个 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没有工作?
答案 0 :(得分:2)
您应该在课程中使用.
而不是__
:
def __str__(self):
return "{}".format(self.billing_profile.email)
related fields access的双下划线语法仅在django queryset中使用,但在普通的python代码中,您应该使用.
来访问对象的attribute。