n0str0m0
@n0str0m0
python developer

Как правильно вывести данные из из БД в Django?

Доброго времени суток!

Я новичок, делаю сайт рекламного агенства.
Не могу вывести данные об услугах из таблицы БД на шаблон.

Вот что имеется:
models:
class Service(models.Model):
    name = models.CharField('Наименование услуги', max_length=40, blank=False, help_text="Заполните наименование услуги")
    price = models.CharField('Цена', max_length=15, blank=False, help_text="укажите цену за услугу")
    description = models.TextField('Описание услуги', blank=False, max_length=1000)


view:
class ServiceListView(ListView):
    model = Service
    template_name = 'services.html'
    queryset = Service.objects.all().order_by('name')


html:
<tbody>
{% for serv in object_list %}
    <tr>
        <td>{{ serv.name }}</td>
        <td>{{ serv.description }}</td>
        <td>{{ serv.price }} руб.</td>
    </tr>
{% endfor %}
</tbody>


Выводит пустую таблицу:
5a747948f2f3a244550054.png

Данные в таблице имеются:
5a7481a5a467b634286941.png

Что я делаю не так?
  • Вопрос задан
  • 6113 просмотров
Решения вопроса 1
n0str0m0
@n0str0m0 Автор вопроса
python developer
Вопрос решился.
Как оказалось, после добавления класса ServiceListView, я забыл изменить в urls.py строку на ServiceListView.as_view()

Теперь всё отображается как надо. Всем спасибо за советы и помощь!
5a7648b631e55270187841.png
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@vikholodov
price лучше делать decimal или integer, гибкости больше будет, blank=False необязательно указывать.
попробуйте заменить вьюху на
def ServiceListView(request):
    serv_list= Service.objects.all().order_by('name')
    returnt render (request, 'services.html', {'serv_list':serv_list})

в шаблоне:
{% for serv in serv_list %}<td>{{ serv.name }}</td>{% endfor %}
Ответ написан
поменяйте
<td>{{ serv.name }}</td>
на
<td>{{ name }}</td>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы