1

「is_dotcom」というモデルのブール値フィールドを管理者の list_display に追加しました。実装は次のとおりです。

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?'

しかし、私の管理ページで得られるものはすべて「(なし)」です。True/False を期待しています (ただし、ブール値が緑色のチェックまたは赤色の進入禁止標識として表示されることがありますが、その理由を知っている人はいますか?)

このコードは、 django チュートリアルの例に基づいています。

is_dotcom() メソッドが django がキャッチしている AttributeError を発生させているため、「(None)」が表示されていると想定しています。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 に答える