0

HTML を吐き出すクラス プロパティがあります。

class Task (models.Model):
    def test(self):
        return """<img border="0" alt="" src="/%s/%s/%s" />""" % (UPLOADS_DIR, GRAPH_DIR, "task.svg")

    test.allow_tags = True

返された HTML をモデルの管理ページに簡単にフィードするにはどうすればよいですか? list_display() ページで機能します。モデル ページの test() のカスタム ウィジェットを作成しようとしましたが、ウィジェットは実際に画像を表示できませんでした。このモデルのカスタム テンプレートを作成してこの問題を解決したくありません。基本的に、プロパティの出力を変更せずに、テスト用の HTML をモデルの管理ページに配置するだけのカスタム フォームまたはウィジェットを探しています。

何かご意見は?

どうもありがとう!

時代

4

1 に答える 1

0

あなたが熱心ではないことは知っていますが、テンプレートをオーバーライドすることが最善の方法になると思います。

ウィジェットは特定のフィールドに関連付けられていますが、test()メソッドは関連付けられていません。繰り返しになりますが、django フォームは単にフィールドに関係しています。それらは、データを提示するのではなく、サーバーにデータを送信することに関するものです。つまり、ビューとテンプレートです。

テンプレートをオーバーライドしてこれを行うのは面倒ではありません。本当にきれいにしたい場合は、既存のテンプレートを拡張して、フィールドを一番下に追加するだけです。管理テンプレートのオーバーライドに関するドキュメントをご覧ください。特定のモデルの特定のテンプレートをオーバーライドするのは非常に簡単です。

于 2013-02-22T10:00:17.127 に答える