0

Я хочу отправить электронное письмо пользователям, которые не активировали свои учетные записи каждые 120 дней. Я использую DateTimeField для их атрибута created.Как я могу запросить модели django, используя modulo?

Как я могу найти набор запросов пользователей, для которых created % 120 == 0?

Вот что я пытаюсь, используя annotate и F объектов:

members = Member.objects.annotate(
    days_old=(datetime.datetime.now() - F('created')) 
) 
members = members.annotate(modulo_days=F('days_old') % 120) 
members = members.filter(modulo_days=0) 

... но это возвращает ошибку:

TypeError: expected string or buffer

ProgrammingError: operator does not exist: interval % integer

Как я могу получить эту QuerySet ищет по модулю временной метки на модели Django?

ответ

1

Другой способ делать QuerySet, которые могли бы работать для вас:

from datetime import timedelta 
from datetime import datetime 

to_compare_datetime = datetime.now() - timedelta(days=180) 
members = Member.objects.filter(account_activated=False, created__year=to_compare_datetime.year, created__month=to_compare_datetime.month, created__day=to_compare_datetime.day) 

Я предположив, что ваша Member модель имеет поле account_activated, и что created поле является DateTimeField. Надеюсь, это вам поможет :)