Django使用模型EmailField引发AttributeError

时间:2013-02-22 21:17:09

标签: django django-models django-admin

我在管理员list_display中添加了一个名为'is_dotcom'的模型布尔字段,其实现是:

email = models.EmailField(max_length=254)

def is_dotcom(self):
    return self.email.lower().endsWith(".com")

is_dotcom.admin_order_field = 'email'
is_dotcom.boolean = True
is_dotcom.short_description = 'Company?'

但我的管理页面上的所有这些收益都是“(无)”。我期待真/假(虽然有时我的布尔人显示为绿色支票或红色没有进入标志,任何人都知道为什么会这样?)

我已将此代码基于django tutorial中的示例。

我假设正在显示“(None)”,因为is_dotcom()方法引发了一个django正在捕获的AttributeError。我猜测在EmailField上调用.lower()是合法的,但我不确定(你们为参考文档做了什么?)谢谢。

1 个答案:

答案 0 :(得分:1)

问题出在这一行:

    return self.email.lower().endsWith(".com")

方法是.endswith() 请注意没有驼峰式的情况。

重现错误的简化示例:

>>> 'foo'.endsWith('test')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'endsWith'