djangoテンプレート内のオブジェクトのモデル名を取得する方法はありますか?手動で、モデルでメソッドを定義したり、テンプレートタグを使って試すことができます...しかし、組み込みの方法はありますか?djangoテンプレート内のオブジェクトのモデル名
答えて
object.__class__.__name__
またはobject._meta.object_name
は、モデルクラスの名前を与える必要があります。ただし、このは、属性名がアンダースコアで始まるので、テンプレートでは使用できません。
テンプレートからその値を取得する方法が組み込まれていないため、その属性を返すモデルメソッドを定義するか、より一般的な/再利用可能なソリューションでテンプレートフィルタを使用する必要があります。
として、あなたのテンプレートで使用することができます@register.filter
def to_class_name(value):
return value.__class__.__name__
:あなたは直接クラス名にアクセスすることはできません
{{ obj | to_class_name }}
。次のような操作を行う:
{{ object.__class__ }}
TemplateSyntaxError: Variables and attributes may not begin with underscores
が発生します。 Djangoはそれらの属性にアクセスすることはできません。Pythonの規約は、オブジェクトのAPIの一部ではなく、実装の詳細が隠されていることを意味します。
代わりに、テンプレートフィルタを作成し、次のようにあなたはそれを使用することができます。
{{ object|model_name_filter }}
の作成フィルタは非常に簡単です:https://docs.djangoproject.com/en/dev/howto/custom-template-tags/
1.2バージョン以来とDjangoはに属性opts
を持って早期かもしれテンプレート。 atributeは証拠についてmodel._meta
へのリンクがあり、あなたがしなければならないlook at source code into Githubそれは非常に単純なテンプレートに使用
:{{opts}}
または{{opts.db_table}}
これはdjango-admin専用です。 –
- 1. テンプレート内でのdjangoモデルの検証エラー
- 2. 複数モデルのDjangoテンプレート
- 3. django ManyToManyモデルのビューとテンプレート
- 4. Django:モデルやテンプレートのないビューからオブジェクトを更新する
- 5. テンプレート内のDjangoインポート
- 6. djangoテンプレート内のマルチカラムテーブル
- 7. テンプレート内のDjangoコールメソッド
- 8. Django:テンプレート内のrequest.session
- 9. テンプレート内のdjango forloopcounter
- 10. テンプレート内のdjangoクエリーセット
- 11. テンプレート内のモデルのget_absolute_url定義を使用したdjango
- 12. Djangoのテンプレート名の競合
- 13. テンプレートにDjangoモデルを渡す
- 14. Djangoテンプレートdatetime.weekdayの名前
- 15. テンプレート内のDjangoチェックフォームのエラーコード
- 16. リレーショナルモデルのテンプレート内のDjango QuerySet
- 17. テンプレート内のDjangoのURL NoReverseMatch
- 18. Djangoモデル関連オブジェクトのバリデーション
- 19. save()メソッドのdjangoモデル名
- 20. Django:モデル名の衝突
- 21. Djangoの管理モデル名「S」
- 22. Djangoモデル:フィールド名の衝突
- 23. 複数のモデルをテンプレートに渡すDjango
- 24. モデルによるDjangoテンプレートの配置
- 25. DjangoのフォームCREATEVIEWモデル内のモデルの
- 26. テンプレート内のDjango外部キー
- 27. テンプレート内のDjango注釈
- 28. djangoテンプレート内のインラインCSSファイル
- 29. djangoテンプレート内の可変イメージ
- 30. Djangoループとテンプレート内のオブジェクトと辞書項目へのアクセス
[OK]を..おかげreply.Iためのショーンは、この方法を使用し、思考は、いくつかの組み込みの方法かもしれません! ! – Neo
私はそれが必要であるとは考えていませんが、組み込みのアプローチを保証するのに十分です。頻繁に必要な場合は、そのメソッドを実装する抽象クラスを作成し、それをすべてのモデルのベースとして使用できます。個人的には、私はフィルタータグの使用に固執します。 –
Ok .. Shawnに感謝します。 – Neo