我正在研究使用django基本应用程序的遗留代码。基本的博客应用程序有标记结果页面。
我想知道如何扩展此方法以从两个模型返回标记内容。 Post模型和其他一些模型。
def tag_detail(request, slug, template_name='blog/tag_detail.html', **kwargs):
tag = get_object_or_404(Tag, name__iexact=slug)
return list_detail.object_list(
request,
queryset=Post.objects.filter(tags__name__iexact=slug, status=2),
extra_context={'tag': tag},
template_name=template_name,
**kwargs
)
修改
这是我最终做的事情
quertsetA = A.objects.filter(tags__name__iexact=slug, status=2)
querysetB = B.objects.filter(tags__name__iexact=slug, status=2)
result_list = list(chain(quertsetA, querysetB))
这适用于python shell,但只有quertsetA的值被传递给模板。
以下是视图的相关部分
return list_detail.object_list(
request,
queryset=result_list,
template_name=template_name,
**kwargs
)
和模板
{% for post in object_list %}
{{ post }}
{% endfor %}
答案 0 :(得分:1)
如果将查询集转换为列表,则可以将它们连接起来
quertsetA = [p for p in Post.objects.filter(tags_name_iexact=slug, status=2)]
querysetB = [o for o in Other.objects.filter(tags_name_iexact=slug...)]
queryset = querysetA+querysetB