Как мне преобразовать строку, представленную в виде списка в базе данных MySQL, в список в шаблоне Django, чтобы я мог перебирать ее? - PullRequest
0 голосов
/ 31 января 2019

ОБНОВЛЕНИЕ:

Дополнительная информация:

Версия 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.

Попытка построения списка в шаблоне Django с использованием встроенных шаблонных фильтров, with, cycle, as list и других.

<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 голосов
/ 01 февраля 2019

Проблема здесь в том, что я использую json.dumps() для вставки данных в базу данных, которая преобразуется в тип String.

Следовательно, мне нужно сделать json.loads(), прежде чем я смогу аккуратно отобразить данные.

Итак, чтобы устранить эту ошибку, я непосредственно вставил значения в базу данных, например

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

вместо

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

...