如何使用modulo查询django模型?

时间:2015-07-24 20:54:01

标签: django django-models django-queryset datetime-format python-datetime

我想向每120天未激活帐户的用户发送电子邮件。我使用DateTimeField作为created属性。

如何检索created % 120 == 0的用户的查询集?

以下是我尝试使用annotateF个对象的内容:

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:期望的字符串或缓冲区

     

ProgrammingError:运算符不存在:interval%integer

如何在Django模型上检索此查询集以查找时间戳的模数?

1 个答案:

答案 0 :(得分:1)

执行可能适合您的查询集的另一种方法:

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。希望这可以帮助你:)