3

プロパティ getp を持つ mymodel というモデルがありますが、これにはパラメーター (リクエスト) が必要です。

class Mymodel(models.Model):
    ...
    def getp(self, request):
        return "STH"

. ビューから、リクエストと 1 つのモデルをテンプレートに渡します。

return render_to_response('x.html', {
                                       'mymodel': Mymodel.objects.get(id=17),
                                       'request': request
                                   }, context_instance = RequestContext(request))

、およびテンプレート ファイルから、リクエスト パラメータを使用して getp 関数を呼び出す方法はありますか? 私はこれがこのように使用されるべきではないことを知っていますが、私の質問は実用的というよりむしろ理論的です.

この問題の回避策はありますか?

ありがとう。

4

1 に答える 1

3

How to use method parameters in a Django template?の複製の ようです

1 つの解決策は、メソッドの結果をテンプレートに渡すことです。何かのようなもの:

object = Mymodel.objects.get(id=17)
return render_to_response('x.html', {
    'mymodel': object,
    'mymodel_getp': object.getp(request),
    'request': request
    }, context_instance = RequestContext(request))

他の解決策は、カスタム テンプレート タグを記述することです。

@register.simple_tag(name="model_getp", takes_context=True)
def model_getp(context, object=None):
    return object.getp(context)

そしてテンプレートで:

{% model_getp mymodel %}
于 2013-04-12T22:23:25.840 に答える