Django фильтр __ в нескольких полях - PullRequest
0 голосов
/ 27 января 2020

У меня есть модель для расписания пользователя.

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 для идентификаторов.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...