【发布时间】:2021-02-20 08:49:09
【问题描述】:
我有一个 Payment Django 模型,它有一个 CheckNumber 属性,我似乎遇到了问题,至少在 str 方法。创建 Payment 实例时,它在管理页面上工作得很好,但是当我在方法中调用它时,它给了我以下错误消息:
Request URL: http://127.0.0.1:8000/admin/Vendor/payment/
Django Version: 3.0.7
Exception Type: AttributeError
Exception Value:
'Payment' object has no attribute 'CheckNumber'
Exception Location: /Users/beepboop/PycharmProjects/novatory/Vendor/models.py in __str__, line 72
Python Executable: /Users/beepboop/Environments/novatory/bin/python3.7
Python Version: 3.7.2
这是我的代码:
class Payment(models.Model):
Vendor = models.ForeignKey(Vendor, on_delete=models.CASCADE)
Amount = models.DecimalField(decimal_places=2, blank=True, max_digits=8)
PaymentDate = models.DateField(name="Payment date", help_text="Day of payment")
CheckNumber = models.IntegerField(name="Check number", help_text="If payment wasn't made with check, leave blank", blank=True)
def __str__(self):
return f"Vendor: {self.Vendor.Name} | Amount: {prettyPrintCurrency(self.Amount)} | Checknumber: {self.CheckNumber}"
我绝对喜欢关于错误原因的任何 cmets/建议
【问题讨论】:
-
使用小写和下划线而不是驼峰式命名模型的属性是一个很好的 Python 实践。在 Django 中,模型属性名称区分大小写,如果您的表没有
CheckNumber字段,它将不会迁移并且无法使用。验证您的字段实际上已正确迁移到他们的表中。 -
嗨,dmitryro,我尝试正确更改名称,但产生了同样的错误