我为我的django应用程序编写了一个搜索功能,它会根据搜索框中输入的搜索字符串进行多种不同的过滤。我将这些不同的查询过滤的结果保存在一个名为'results'的变量中(看起来合适),但是我无法让模板根据查询集所基于的对象类型正确呈现变量。结果变量可以采用'过滤'对象1的查询集的形式,也可以采用0结果(如果没有任何对象匹配该搜索),或者它可以采用'过滤'对象2或0结果的查询集的形式(如果没有对象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
如果没有结果,请编码