1

我在我的管理员 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 教程中的示例。

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

4

1 回答 1

2

问题出在这一行:

    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'
于 2013-02-22T21:23:16.023 回答