如何获取相关项目的列表并在 Django 中应用模板过滤器

Posted

技术标签:

【中文标题】如何获取相关项目的列表并在 Django 中应用模板过滤器【英文标题】:How to get a list of related items and apply a template filter in Django 【发布时间】:2013-12-09 17:56:48 【问题描述】:

我有一个自定义过滤器,它通过指定字符连接项目数组。比如它会转:

在视图中:

test_array = ['one', 'two', 'three', 'four']

在模板中:

 test_array |joinby:","  

输出:

one, two, three, four

我需要将相同的过滤器应用于模型中相关项目的查询集。到目前为止我已经尝试过了:

 user.related_model.all.name|joinby:","  

但是它什么也不返回。使此类查询起作用的最佳方法是什么?

【问题讨论】:

【参考方案1】:

您可能希望保持模板干净,并创建一个过滤器,或在您的视图中处理它。

在视图中:

def my_view(request):
    #blah
    user_followers = request.user.related_model.values_list('name', flat=True)

在模板中

 user_followers | joinby: "," 

或者

注册一个过滤器

@register.filter(name='related_names')
def get_related_names(user):
    user_followers = user.related_model.values_list('name', flat=True)
    return ", ".join(user_followers)

在模板中:

% related_names %

【讨论】:

以上是关于如何获取相关项目的列表并在 Django 中应用模板过滤器的主要内容,如果未能解决你的问题,请参考以下文章

Django:如何从与用户相关的子查询集中获取不同的父列表?

Django:如何获取列表相关的 ForeignKey 记录?

如何使用列表中显示的相关项目的下拉列表使特定模型类的 Django contrib Admin 更改列表可编辑?

如何从自定义列表视图中获取选定项目并在 toast 消息中打印?

为啥我的上传目录相对于项目目录,但 Django 试图从与应用程序相关的路径中获取它?

编写一个 django 查询并在一次数据库中获取反向相关对象!