Преобразование часов и дней недели из БД для вывода в шаблон 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 %}