Ну, судя по вашему объяснению, не совсем понятно, что вы пытаетесь выполнить sh. Я предполагаю, что пользователь может ввести какие-то данные, чем вам нужно для обработки этих данных и выполнения запроса.
Например, что означает «январь»? Январь этого года или что-то еще. В январе любого года? Вы понимаете, что я имею в виду?
Обычно в этих случаях я обрабатываю вводимые пользователем данные и формирую диапазон дат, который может быть помещен в запрос как from_date - end_date. Например, если ваш «январь» означает январь этого года, тогда диапазон от 1 января 2020 года до 31 января 2020 года. В этом случае у вас будет:
from_date = "01/01/2020"
to_date = "31/01/2020"
, и ваш запрос будет выглядеть так:
filter=(Q(date__gte=from_date) & Q(date__lte=to_date))
Кстати, __gte означает greatherthan_or_equal, а __lte означает lowerthan_or_equal.
UPDATE
Если вам нужно отфильтровать все даты одного месяца в любой год, вы также можете сделать что-то вроде:
filter(date__month='1')
или, если вы хотите sh добавить год:
filter(date__year='2019').filter(date__month='1')
Хотя первый вариант дает вам больше гибкости, потому что вы можете искать через месячные границы второй вариант более точно соответствует тому, что вы ищете.
Надеюсь, это поможет.