У меня есть модель для расписания пользователя.
class Schedule(models.model):
user = models.ForeignKey(User)
day = models.SmallIntegerField()
hour = models.SmallIntegerField()
Я хотел бы выбрать общие временные интервалы для двух заданных пользователей A и B.
Используя этот код:
user_schedule = models.Schedule.filter(user=user_a)
models.Schedule.filter(user=user_b).filter(day__in=user_schedule.values('day'),hour__in=user_schedule.values('hour'))
Возвращенные результаты не используют оба поля для выбора. Проверка запроса показывает, что запрос не выполняет то, что я хочу
WHERE ("profiles_schedule"."day" IN (SELECT U0."day" FROM "profiles_schedule" U0 WHERE U0."user_id" = 1) AND "profiles_schedule"."hour" IN (SELECT U0."hour" FROM "profiles_schedule" U0 WHERE U0."user_id" = 1)
Мне нужно сделать что-то вроде:
WHERE "profiles_schedule"."day", "profiles_schedule"."hour" IN (SELECT U0."day", U0."hour" FROM "profiles_schedule" U0 WHERE U0."user_id" = 1)
Если я нормализую модель дальше, создав день / Таблица поиска по часам облегчила бы выбор, но мне кажется, что на самом деле не имеет смысла пытаться нормализовать два поля SmallINT, поскольку я все равно буду создавать 2 столбца SmallINT для идентификаторов.
Спасибо!