Python django-将参数从模板传递到models.py';s函数

Python django-将参数从模板传递到models.py';s函数,python,django,templates,variables,models,Python,Django,Templates,Variables,Models,我有一个名为mymodel的模型,它有一个属性getp,但这需要一个参数(请求): 。从视图中,我将请求和一个模型传递给模板: return render_to_response('x.html', { 'mymodel': Mymodel.objects.get(id=17), 'request': request

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

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

return render_to_response('x.html', {
                                       'mymodel': Mymodel.objects.get(id=17),
                                       'request': request
                                   }, context_instance = RequestContext(request))
{% model_getp mymodel %}
,从模板文件中,是否有任何方法可以使用请求参数调用getp函数?我知道这不应该这样使用,但我的问题是理论性的而不是实践性的

这个问题有解决办法吗

谢谢。

似乎是

一种解决方案是将方法的结果传递给模板。比如:

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)
然后在模板中:

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

谢谢第一个解决方案是如何以django的方式使用它,但是这个解决方案的问题是,如果我想向模板传递更多的对象(Myobject.objects.filter()),并且我想循环它们,该怎么办。一个明显的解决方案是在结果中使用元组,就像((mymodel1,mymodel1_-getp),(mymodel2,mymodel2_-getp)),但这很难看。第二个解决方案很好,我喜欢(除了simple_标记不接受name参数),但是如果我想测试结果的存在性呢?至少在这种形式下,它实际上不起作用:{%if model_getp mymodel%}。若要在if语句中使用它,您必须从中筛选出一个计算结果为bool的筛选器。我不知道如何将上下文传递给filterI c。在第一个场景中,当我从视图返回所需的结果时,解决我的问题的“标准方法”是什么,因为我认为我的元组解决方案非常难看。但是,如果第二个解决方案可以使用if标记,那就太好了。