【发布时间】:2015-07-16 02:05:06
【问题描述】:
我有一个模型将显示在 ListView 中。模型中的字段之一是具有 3 个选项的类别。当我显示模板时,我希望能够区分这 3 个类别。我考虑覆盖 get_context_data() 通过获取所有对象并过滤它们来为每个类别添加上下文。
这会比自定义模板标签更好吗?
即使是这样,假设我仍然想创建自定义模板标签来完成此操作,我将如何编写它?我知道如何编写自定义标签,但我不确定如何编写这样的标签。
我能想到的唯一想法是创建一个类似的标签:
@register.simple_tag(name="is_cat1", takes_context=True)
def is_cat1(self, context):
objs = context['object_list']
if (MyModel.objects.filter(category__icontains="Cat1") in objs):
objs = MyModel.objects.filter(category__icontains="Cat1")
return objs
谁能提供一个处理此类模型的过滤器示例?以及回答我关于使用上下文是否更好的问题?
谢谢
【问题讨论】:
-
不能从模板标签调用模型。您对此有 ajax 调用。
-
我开始意识到上下文对象是唯一的解决方案,AJAX 是什么意思?
-
不是为了这个,而是在模板中
-
我的意思是你能给我一个在模板中用于访问模型的 AJAX 调用的示例吗?就像你提到的那样?
-
AJAX 是一个 javascript 概念 - 它并不是 django 模板的一部分。使用 AJAX,您可以向服务器发送查询并返回对象(通常为 json)并使用此 json 填充其他 html 实体。在这里阅读更多 - en.wikipedia.org/wiki/Ajax_(programming)