如何将在MySQL数据库中表示为列表的字符串转换为Django模板中的列表,以便可以对其进行迭代?

时间:2019-01-31 13:05:50

标签: python mysql django django-models django-templates

更新:

其他信息:

Python版本:3.4

操作系统:Windows

Django:1.11.18

MySQL 8

models.py

mailing_address = models.JSONField()

views.py

#插入数据时

data.locations = json.dumps(request.POST.getlist('locations'))

data.save()

#检索数据时

my_requests_queryset = ListingModel.objects.filter(owner=request.user)

return render(request, 'home/home_dashboard_my_requests.html', {'my_requests_queryset': my_requests_queryset})

我已经在MySQL数据库中存储了一个邮件地址列表,例如:

['1212 Los Angeles, CA', 'Nariman Point, Mumbai, India']

我希望在HTML模板中打印列表的每个元素。不幸的是,每个字符都在打印。

现在,当我尝试遍历列表时,在Django模板中,我得到了每个字符而不是每个列表元素。

我已经尝试使用Django库 django-mysql 来实现本机JSONField

尝试使用内置模板过滤器withcycleas list等在Django模板中构建列表。

<div class="container">
    {% if my_requests_queryset and my_requests_queryset|length > 0 %}
    {% for req in my_requests_queryset %}
    <div class="row mb-1">
        <div class="col-lg-2"></div>
        <div class="col-lg-8">
            <a href="#" class="card-link">
                <div class="card text-center">
                    <div class="card-header">
                        {{ req.title|title|truncatechars:36 }}
                    </div>
                    <div class="card-body">
                        <h5 class="card-title">
                            {% for address in req.locations %}
                                {{ address }}
                            {% endfor %}
                        </h5>
                    </div>
                </div>
            </a>
        </div>
    </div>
    {% endfor %}
    {% endif %}
</div>

我希望将列表中的每个元素打印为:

1212 Los Angeles, CA
Nariman Point, Mumbai, India

1 个答案:

答案 0 :(得分:0)

这里的问题是,我正在使用json.dumps()将数据插入数据库,该数据库被转换为String类型。

因此,在整洁地显示数据之前,我需要执行json.loads()

因此,要解决此错误,我已将值直接插入到数据库中,例如

locations = request.POST.getlist('locations')

代替

locations = json.dumps(request.POST.getlist('locations'))