【问题标题】:Django - How to return tagged content from two modelsDjango - 如何从两个模型返回标记的内容
【发布时间】:2012-11-27 06:52:56
【问题描述】:

我正在编写使用 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 %}

【问题讨论】:

    标签: django django-models django-views


    【解决方案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
    

    【讨论】:

    • 这绝对帮助我合并了两个查询。我添加了我的解决方案。但是,现在我在模板中显示合并查询时遇到了问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 2023-03-14
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    相关资源
    最近更新 更多