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:テンプレート内のrequest.session
- 3. Djangoのテンプレート名の競合
- 4. Djangoテンプレートdatetime.weekdayの名前
- 5. Djangoモデル関連オブジェクトのバリデーション
- 6. Django:モデル名の衝突
- 7. テンプレート内にDjangoレンダリングテンプレート
- 8. テンプレートにモデル名を表示
- 9. テンプレート内のforループ内のDjangoテンプレートのアクセス値
- 10. djangoテンプレートでテンプレート名を取得する
- 11. JSONパース - Djangoテンプレートで名前
- 12. モデル内からDjangoのログイン名を参照する
- 13. Formタグを使ってDjangoテンプレートでモデルの名前を取得する
- 14. テンプレート内のsymfonyアクション名
- 15. @login_required django 1.1のデコレータとテンプレート名
- 16. Djangoテンプレートでの複雑な変数名
- 17. Djangoモデルのプライマリフィールドの名前を取得
- 18. テンプレート内のDjangoフォームの検証
- 19. Django admin複数のモデル名を変更
- 20. DjangoテンプレートでDjangoテンプレート
- 21. Djangoのテンプレート内のフォームフィールドのそれぞれに固有の名前
- 22. Djangoテンプレート用のVim内部タグブロック
- 23. ディレクトリファイルの内容をDjangoテンプレートに表示
- 24. テンプレート内のdjango単純な関係
- 25. Django。テンプレートのモデルの既存のインスタンスを持つインラインフォームセット
- 26. Django複数のモデルを1つのテンプレートに渡す
- 27. Django:オブジェクト/オブジェクトIDを別のテンプレートに渡す方法
- 28. Djangoは、私はDjangoのモデルを持っている匿名ユーザー
- 29. Djangoテンプレート内のクエリーセット内の特定のレコードを表示
- 30. モデル内の特定のオブジェクトのForeignKey
[OK]を..おかげreply.Iためのショーンは、この方法を使用し、思考は、いくつかの組み込みの方法かもしれません! ! – Neo
私はそれが必要であるとは考えていませんが、組み込みのアプローチを保証するのに十分です。頻繁に必要な場合は、そのメソッドを実装する抽象クラスを作成し、それをすべてのモデルのベースとして使用できます。個人的には、私はフィルタータグの使用に固執します。 –
Ok .. Shawnに感謝します。 – Neo