Django模板中查询集中的循环内循环

Posted

技术标签:

【中文标题】Django模板中查询集中的循环内循环【英文标题】:Loop inside loop in queryset in Django template 【发布时间】:2014-02-14 09:19:27 【问题描述】:

我有这样的查询集:

hello = Hello.objects.all()

在模板中我会这样做来获取数据:

% for h in hello %
   % for i in h.data % #data is stored like this ['a', 'b', 'c'] -->  I want to access individual componenet, thus I would do:
      i
   % endfor %
% endfor %

但不是将数据生成为:

a 
b
c 

它产生为['a', 'b', 'c']

怎么了?我有理由将数据存储在列表中。如何分别访问每个数据。谢谢

目的: 颜色在数据字段中存储为:[black, green, brown] 因此我想实现:

div style="color: black"
div style="color: green"
div style="color: brown"

编辑 models.py 类你好(模型。模型): 用户 = 模型。外键(用户) 数据 = models.CharField(max_length=255)

def __str__(self):
    return "%s's decoration photos" % self.user

【问题讨论】:

能否提供models.py源代码? 好的先生,请看我编辑的问题。 【参考方案1】:

假设Hello 是一个将data 存储为CharField 的模型,那么Django 假设您有一个字符串而不是一个列表是正确的。

尝试使用名为 Color 的模型,该模型具有指向 Hello 的 ForeignKey。这将是在Hello 与其Color 对象之间建立一对多关系的正确方法。

【讨论】:

【参考方案2】:

处理这个问题的最好方法是编写自己的 django 模板过滤器来迭代过滤器。

与https://docs.djangoproject.com/en/dev/ref/templates/builtins/给出的非常相似

开始就在这里。 https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

【讨论】:

在这种特殊情况下有点矫枉过正

以上是关于Django模板中查询集中的循环内循环的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 2.1 中的模板内的 for 循环内设置变量?

如何在 django 模板中获取 for 循环内的列表的下一个元素?

<select> 内循环的 Django 模板在选择后呈现值

循环渲染的 Django 模板查询花费了太多时间

Django - 在模板的for循环中迭代数字

Django循环进入模板,ORM