Сравнение дня недели с помощью отношения ManyToMany
Я новичок в Django и учусь, и я пытаюсь сделать следующее: Пользователь регистрирует дни недели и период времени, в который он доступен.
class DiasDaSemana(models.Model):
diasdasemana = models.CharField(max_length=20)
def __str__(self):
return self.diasdasemana
class RelacaoHorarioSemana(models.Model):
usuario = models.ForeignKey(User, on_delete=models.CASCADE)
relacao_dia_semana = models.ManyToManyField(DiasDaSemana)
start_horario = models.TimeField(auto_now=False,
verbose_name='Horário Inicial',blank=False, null=False)
end_horario = models.TimeField(auto_now=False,
verbose_name='Horário Final',blank=False, null=False)
obs = models.TextField(max_length=200, null=True)
class Meta:
verbose_name = "Usuário e Horário"
verbose_name_plural = "Usuários e Horários"
def dias_da_semana(self):
return ", ".join([str(p) for p in self.relacao_dia_semana.all()])
def __str__(self):
return str('Cadastre o Horário de Trabalho do Usuário:')
Я хочу добавить логику, которая проверяет, доступен ли пользователь в текущее время и день, чтобы я мог отфильтровать результаты для отображения в шаблоне. Я пытаюсь сравнить идентификаторы timezone.isoweekday с идентификаторами, введенными пользователем (которые одинаковы, понедельник = 1 и Segunda-feira (понедельник по-португальски) = 1), но я не знаю, как это сделать... Я думал о запросе поля ManyToMany, но я не знаю, как это сделать. Пока что у меня получилось следующее:
@property
def checar_disponibilidade_horario_dia(self):
data_comeco = timezone.localtime(self.start_horario)
data_fim = timezone.localtime(self.end_horario)
data_agora = timezone.localtime(timezone.now())
# Segunda é 1 e Domingo é 7
diasemana_hoje = timezone.isoweekday(timezone.now())
diasemana_disponivel = ###this is where i 'm having trouble####
if diasemana_hoje == diasemana_disponivel:
if data_agora >= data_comeco and data_agora <= data_fim:
dado_disponibilidade = {'Disponível': 'S'}
return dado_disponibilidade
elif data_agora > data_fim:
dado_disponibilidade = {'Disponível': 'N'}
return dado_disponibilidade
elif data_agora < data_comeco:
dado_disponibilidade = {'Disponível': 'N'}
return dado_disponibilidade
elif diasemana_hoje != diasemana_disponivel:
dado_disponibilidade = {'Disponível': 'N'}
return dado_disponibilidade
pass
Спасибо!