首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Django模板不能识别object字段中的列表?

为什么Django模板不能识别object字段中的列表?
EN

Stack Overflow用户
提问于 2019-06-25 22:11:25
回答 2查看 264关注 0票数 0

我有一个存储列表的对象字段。Django模板将列表视为字符串,它遍历每个字符,而不是每个列表值。

已尝试以多种方式保存对象字段,“1”、“2”和"1,2“。已尝试"|make_list“过滤器。

models.py

代码语言:javascript
复制
class SpecialField(models.Model):
    name =  models.CharField(max_length=200,blank=True,null=True)
    description =  models.CharField(max_length=200,blank=True,null=True)
    value_options = models.CharField(max_length=200,blank=True,null=True)
    # value_options might be "['1','2']" or "red, green, blue"

views.py

代码语言:javascript
复制
object_field_list= SpecialField.objects.all()

context = {
    'object_field_list': object_field_list,
}

return render(request, 'app1/template-detail.html', context)

模板

代码语言:javascript
复制
{% for object_field in object_field_list%}

    {% for list_value in object_field.value_options %}
       <option>{{ list_value }}</option>
    {% endfor %}

{% endfor %}

我一直在期待:

代码语言:javascript
复制
<option>1</option>
<option>2</option>

但我得到的是:

代码语言:javascript
复制
<option>[</option>
<option>'</option>
<option>1</option>
<option>'</option>
<option>,</option>
<option>'</option>
<option>2</option>
<option>'</option>
<option>]</option>
EN

回答 2

Stack Overflow用户

发布于 2019-06-26 00:23:50

您希望显示模型中的数据,因此假设您有一个模型

代码语言:javascript
复制
class SpecialField(models.Model):
    name=models.CharField(max_length=101)
    price = models.IntegerField(default=0)

根据您在context中设置的方式,您可以使用以下命令在模板中显示

代码语言:javascript
复制
{% for obj in object_field_list %}
    {{ obj.name}} - {{ obj.price }}
{% endfor %}

显然,你需要修改你的模型

在suggestion...it上进行调整需要更多级别的循环。还是不能让它工作。

models.py

代码语言:javascript
复制
class SpecialField(models.Model):
    name=models.CharField(max_length=101)
    price = models.IntegerField(default=0)
    custom_list = models.CharField(max_length=200)

模板

代码语言:javascript
复制
{% for obj in object_field_list %}
    {{ obj.name}} - {{ obj.price }}

    {% for list_value in obj.custom_list %}
        {{ list_value }}
        # this is where it's breaking for me
    {% endfor %}

{% endfor %}
票数 0
EN

Stack Overflow用户

发布于 2019-06-26 04:53:00

这是最方便的solution...define,一个使用split的新列表。https://stackoverflow.com/a/8318915/9268133。感谢大家的帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56756030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档