Django view возвращает только первичный ключ из поля в шаблон, без данных - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть модель с категориями столбцов в таблице Product, в которой есть одна запись 'beds'.

Когда я пытаюсь получить список категорий или продуктов (все из которых имеют названия, описания и т. д.), единственное, что я могу получить - это числа.

Это релевантное представление из моего views.py

def product(request):
    template = loader.get_template('/home/user/webapps/webapp/my_site/main_page/templates/main_page/product.html')
    prods = xroduct.objects.values_list('product')
    context={'prods': prods}
    return HttpResponse(template.render(context))

Это мой код в шаблоне django дляотображаемые данные

{% for instance in prods %}
    <li>{{ instance }}</li>
{% endfor %}

Тем не менее, все, что возвращается, используя HTML при просмотре веб-страницы, это:

<li>(2,)</li>
<li>(1,)</li>

Должно быть возвращено намного больше информации.Имена, описания и т. Д. Почему это не возвращается через мой взгляд?

edit: Как определяется xroduct:

from oscar.core.loading import get_class, get_model

xroduct = get_model('catalogue', 'product')

1 Ответ

0 голосов
/ 16 декабря 2018

Поскольку мы говорим о django-oscar, есть ряд вещей, которые нужно понять:

Для извлечения моделей из Oscar вам необходимо использовать get_model, который является их собственной реализацией динамического импорта интересующих моделей.,get_model выбрал модели из https://github.com/django-oscar/django-oscar/blob/master/src/oscar/apps/catalogue/models.py, которые определены как https://github.com/django-oscar/django-oscar/blob/master/src/oscar/apps/catalogue/abstract_models.py

Что нужно сделать, если вы хотите перечислить продукты, и их информация следующая:

from oscar.core.loading import get_model

Product = get_model("catalogue", "Product")

def list_products(request):
    template = loader.get_template(...)
    products = Product.objects.all()
    context = {"products": products}
    return HttpResponse(template.render(context))

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

{% for instance in prods %}
    <li>{{ instance.title }}</li>
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...