Django Template:如何确定查询集由哪个对象/模型组成?

时间:2014-12-01 11:09:36

标签: python django django-templates

我为我的django应用程序编写了一个搜索功能,它会根据搜索框中输入的搜索字符串进行多种不同的过滤。我将这些不同的查询过滤的结果保存在一个名为'results'的变量中(看起来合适),但是我无法让模板根据查询集所基于的对象类型正确呈现变量。结果变量可以采用'过滤'对象1的查询集的形式,也可以采用0结果(如果没有任何对象匹配该搜索),或者它可以采用'过滤'对象2或0结果的查询集的形式(如果没有对象2)匹配该搜索)。稍后这可能会变得更加不同的对象/模型可以理解,所以我想知道如何检查查询集由哪种类型的对象组成。

任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:3)

给定Django查询集,您可以使用名为model的良好属性检索其模型,该属性提供Model对象。

queryset = SomeModel.objects
print queryset.model  # prints 'path.to.your.app.models.SomeModel'

您可能不想检查完整路径,因此可以使用__name__

print queryset.model.__name__  # prints 'SomeModel'

但由于您无法在模板中访问下划线属性,因此您必须在视图中添加此信息。

更新: 要检查模板中的模型名称,可以将其添加到queryset对象上:

queryset.model_name = queryset.model.__name__   

然后在你的模板中:

{% if queryset.model_name = 'SomeModel' %}
    ... do something
{% elif queryset.model_name = 'SomeOtherModel' %}   
    ....
{% endif %}

答案 1 :(得分:1)

1)检查零 2)检查选择的第一个元素的字段“。名称”。  还get class name for empty queryset in django - class - name - for - empty - queryset - in - django

如果没有结果,请编码