Преобразование часов и дней недели из БД для вывода в шаблон Django

Имеется таблица со следующими полями:

  • monday_from
  • monday_to
  • tuesday_from
  • tuesday_to и так далее по всем дням недели.

В каждом поле - время работы (TimeField). В понедельник С и ДО, во вторник С и ДО соответственно, так по всем дням недели.

Задача: вывести во фронтенд запись вида "Работает пн-пт 12:00 - 17:00" в зависимости от данных, указанных в полях, которые я описал выше. Каким способом такое можно реализовать?


Ответы (1 шт):

Автор решения: Богдан Соловьев

Как-то так, извлеките нужную запись из базы данных через ORM Django, придайте нужный формат, через метод strftime. После чего верните запись через вью которая обрабатывает запрос и в темплейте делайте с этими данными что хотите. Если вы не работали c django templates то почитайте тут, ничего особенно в этом нет, удачи!

import datetime
from django.db import models
from django.shortcuts import render
from django.views import View

# допустим есть модель которая описывает вашу таблицу
class Schedule(models.Model):
    monday_from = models.TimeField()
    monday_to = models.TimeField()

# есть класс который возвращает HTML страницу
class Index(View):
    def get(self, request):
        # в вашем случае может быть Schedule.objects.get(id=<id>)
        schedule = Schedule(id=1, monday_from=datetime.time(hour=8, minute=0),
                            monday_to=datetime.time(hour=18, minute=0))
        print(schedule.monday_from.strftime("%H:%M"))
        print(schedule.monday_to.strftime("%H:%M"))
        # 08:00
        # 18:00

        return render(request, "web/index.html", {"schedules": [{"id": schedule.id,
                                                                 "monday_from": schedule.monday_from.strftime("%H:%M"),
                                                                 "monday_to": schedule.monday_to.strftime("%H:%M")}]})

в HTML темплейте

{% for s in schedules %}
    # нужный тег
    <p>  Работает пн-пт {{ s.monday_from }} - {{ s.monday_to }}  </p>
{% endfor %}
→ Ссылка