【问题标题】:'>' not supported between instances of 'QuerySet' and 'int' in Django'>' 在 Django 中的 'QuerySet' 和 'int' 实例之间不支持
【发布时间】:2021-06-22 07:06:53
【问题描述】:

这是我的代码:

  now = datetime.datetime.now()
  before_requests = MyModel.objects.filter(expired_at__lte=now)
  if before_requests  < 0:
     # some code

我有这个错误:

DateTimeField MyModel.expired_at received a naive datetime (2021-06-22 11:34:44.810749) while time zone support is active.
  warnings.warn("DateTimeField %s received a naive datetime (%s)"
'>' not supported between instances of 'QuerySet' and 'int'

每个人都可以帮助我吗?

【问题讨论】:

  • 我怀疑这是导致此错误的代码。一旦你有了before_requests,你在做什么?
  • @michjnich,我需要过期记录列表。
  • 向我们展示完整的错误回溯!
  • 是的,但是你在做什么呢。您在这里没有提供足够的信息来帮助我们帮助您。

标签: python django


【解决方案1】:
MyModel.objects.filter(expired_at__lte=now)

这会返回一个 QuerySet,它基本上是一个列表——它可以是空的,也可以包含一个或多个实例。 如果您确定只想要第一个(如果有的话),请将其更改为:

first_before_request = MyModel.objects.filter(expired_at__lte=now).first()
if first_before_request:
    # compare it to the int value

您的问题中没有包含进行比较并导致错误的实际代码,所以这是一个疯狂的猜测。

【讨论】:

    【解决方案2】:
    from django.utils import timezone
    
    before_requests = MyModel.objects.filter(expired_at__lte=timezone.now())
    

    【讨论】:

    • 你的代码有这个错误:'>' 在 'QuerySet' 和 'int' 的实例之间不支持
    • 这不是在回答最初的问题 - 它是在解决警告,而不是错误。
    • @michjnich,谢谢,我发现了问题!你的查询是真的!
    猜你喜欢
    • 2020-09-07
    • 1970-01-01
    • 2019-09-10
    • 2018-02-23
    • 2020-05-19
    • 2021-08-10
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多