Для расписания занятий в спортзале мне нужно создать модель, с помощью которой я получу список имен на семь дней.Список будет обновляться ежедневно, поэтому на первом месте всегда будет текущий день недели.Каждый день список будет смещаться на один день, например, в ячейке, в которой слово «среда» стоит сегодня, завтра появится слово «четверг», послезавтра - «пятница» и так далее.Затем имена дней должны быть извлечены в представление и переданы в шаблон.
Я попытался сделать это так:
import calendar
import datetime
from datetime import *
from django.db import models
from django.utils.translation import ugettext as _
class DayOfWeekSchedule(models.Model):
"""General dynamic schedule for a week"""
DOW_CHOICES = (
(1, _("Monday")),
(2, _("Tuesday")),
(3, _("Wednesday")),
(4, _("Thursday")),
(5, _("Friday")),
(6, _("Saturday")),
(7, _("Sunday")),
)
day_of_week = models.PositiveSmallIntegerField(
choices=DOW_CHOICES,
verbose_name=_('Day of week')
)
def days_of_week(self):
my_date = date.today()
current_day_name = calendar.day_name[my_date.weekday()]
index1 = DOW_CHOICES.index(current_day_name) #from Monday=0 (i.e. Friday=4)
list_daynames = list(DOW_CHOICES[index1:] + DOW_CHOICES)[:7] #list of names, current is first
list_index = (2, 3, 4, 5, 6, 7, 1) #to compensate systems difference
list2 = list(list_index[index1:] + list_index)[:7]
context_days = dict(zip(list_keys, list_daynames))
return context_days
Но
DOW_CHOICES.index (current_day_name)
и
list_daynames = list (DOW_CHOICES [index1:] + DOW_CHOICES) [: 7]
, как и ожидалось, не работают, поскольку .index () не применим к кортежам этого типа.
А как это сделать, я не знаю.