我想向每120天未激活帐户的用户发送电子邮件。我使用DateTimeField
作为created
属性。
如何检索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:期望的字符串或缓冲区
ProgrammingError:运算符不存在:interval%integer
如何在Django模型上检索此查询集以查找时间戳的模数?
答案 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
。希望这可以帮助你:)