3

我有一个名为 mymodel 的模型,它有一个属性 getp,但这需要一个参数(请求):

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

. 从视图中,我将请求和一个模型传递给模板:

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

,并且从模板文件中是否有任何方法可以使用请求参数调用 getp 函数?我知道这不应该这样使用,但我的问题是理论上的而不是实际的。

这个问题的任何解决方法?

谢谢。

4

1 回答 1

3

似乎与如何在 Django 模板中使用方法参数重复

一种解决方案是将您的方法的结果传递给模板。就像是:

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 回答