Сравнение дня недели с помощью отношения 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

Спасибо!

Вернуться на верх