为什么Django模板不会识别来自对象字段的列表?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (7)

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

尝试以各种方式保存对象字段,“['1','2']”和“1,2”。试过“| make_list”过滤器。

models.py

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

object_field_list= SpecialField.objects.all()

context = {
    'object_field_list': object_field_list,
}

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

模板

{% for object_field in object_field_list%}

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

{% endfor %}

我希望:

<option>1</option>
<option>2</option>

但我得到:

<option>[</option>
<option>'</option>
<option>1</option>
<option>'</option>
<option>,</option>
<option>'</option>
<option>2</option>
<option>'</option>
<option>]</option>
提问于
用户回答回答于
用户回答回答于

您想要显示模型中的数据,所以我们假设您有一个模型

class SpecialField(models.Model):
    name=models.CharField(max_length=101)
    price = models.IntegerField(default=0)

根据您设置的方式,context您可以在模板中显示此内容

{% for obj in object_field_list %}
    {{ obj.name}} - {{ obj.price }}
{% endfor %}

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

调整你的建议......它需要一个更多级别的循环。仍然无法让它发挥作用。

models.py

class SpecialField(models.Model):
    name=models.CharField(max_length=101)
    price = models.IntegerField(default=0)
    custom_list = models.CharField(max_length=200)

模板

{% 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 %}

扫码关注云+社区

领取腾讯云代金券