在接下来的30天内过滤查询集并通过日期

时间:2018-02-16 23:59:00

标签: python django datetime

我不确定这是不是因为睡眠不足,但我不能为我的生活找出造成这个问题的原因。

AttributeError: 'datetime.date' object has no attribute 'utcoffset'

我正在尝试根据两个条件过滤查询集。

  1. 如果日期已经过去。
  2. 如果日期在接下来的30天内。
  3. 模型

    class Member(models.Model):
        user = models.OneToOneField(User, on_delete=models.CASCADE, blank=True, null=True)
        ...
        membership_expiry = models.DateField(null=True, blank=True)
        club_membership_expiry = models.DateField(null=True, blank=True)
        medical_expiry = models.DateField(null=True, blank=True)
    

    查看get_context_data覆盖

    def get_context_data(self, **kwargs):
            context = super(MembershipReport, self).get_context_data(**kwargs)
            members = Member.objects.all()
            now = date.today()
            thirty_days = now + timedelta(days=30)
            context['membership_overdue'] = members.filter(Q(membership_expiry__lte=now) | Q(membership_expiry__gte=now, membership_expiry__lte=thirty_days))
            return context
    

    我尝试过使用date.today() datetime.now()和django的timezone.now()三者都犯了同样的错误。

2 个答案:

答案 0 :(得分:2)

试试这个,

import pytz
from datetime import datetime

now = datetime.now(tz=pytz.UTC)

答案 1 :(得分:0)

原来是睡眠不足。由于其他答案在这里发布这个给了我一些清晰度并帮助修复了天真的问题。但是错误实际上是因为我在naturaltime lib上的日期对象而不是naturalday上调用了humanize