Python django-将参数从模板传递到models.py';s函数
我有一个名为mymodel的模型,它有一个属性getp,但这需要一个参数(请求): 。从视图中,我将请求和一个模型传递给模板: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
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标记,那就太好了。