【问题标题】:How can I query django models using modulo?如何使用模数查询 django 模型?
【发布时间】:2015-07-24 20:54:00
【问题描述】:

我想每 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: 运算符不存在:区间 % 整数

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

【问题讨论】:

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


    【解决方案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。希望这可以帮助你:)

    【讨论】:

      猜你喜欢
      • 2014-12-20
      • 1970-01-01
      • 2017-08-10
      • 2015-07-13
      • 1970-01-01
      • 2014-02-03
      • 1970-01-01
      • 2019-06-06
      相关资源
      最近更新 更多