【问题标题】:Django filter - is DateTimeField filledDjango 过滤器 - 是否填充了 DateTimeField
【发布时间】:2022-01-17 21:44:28
【问题描述】:

在我的模型中,我添加了一个简单的 DateTimeField:

expired = models.DateTimeField(default=None)

。该字段的值可以是 None 或 Datetime。

我想过滤已过期的任何数据填充的对象,但是我正在努力寻找合适的过滤器。

我想我尝试了所有 filter / exclude 和 expired__isnull=True / expired=None 的组合,但我再也没有得到确切的数字。

如果字段中有 DateTime,过滤的正确方法是什么?

Django:1.11.16

谢谢。


在我的模型中有 2122 行:

Counter(Obj.objects.filter().values_list('expired'))
Counter({(datetime.datetime(2021, 9, 24, 1, 6, 50),): 1,
     (datetime.datetime(2021, 9, 24, 1, 6, 51),): 1,
     (datetime.datetime(2021, 9, 24, 1, 6, 32),): 1,
     (datetime.datetime(2021, 9, 24, 1, 12, 3),): 1,
     (datetime.datetime(2021, 9, 24, 1, 12, 44),): 1,
     (datetime.datetime(2021, 12, 4, 1, 31, 25),): 1,
     (datetime.datetime(2021, 12, 4, 1, 37, 49),): 1,
     (datetime.datetime(2021, 12, 4, 1, 9, 55),): 1,
     (None,): 2087,
     (datetime.datetime(2021, 12, 4, 1, 37, 52),): 1,
     (datetime.datetime(2021, 12, 4, 1, 2, 8),): 4,
     (datetime.datetime(2021, 12, 4, 1, 5, 14),): 9,
     (datetime.datetime(2021, 9, 28, 0, 43, 51),): 1,
     (datetime.datetime(2021, 12, 4, 1, 0, 13),): 7,
     (datetime.datetime(2021, 12, 4, 1, 9, 59),): 2,
     (datetime.datetime(2021, 12, 3, 17, 25, 46),): 1,
     (datetime.datetime(2021, 12, 4, 1, 9, 54),): 1,
     (datetime.datetime(2021, 9, 24, 1, 14, 30),): 1})

.

Obj.objects.filter(expired__isnull=False).count() 返回所有行 (2122) ... .

Obj.objects.filter(expired=None).count() 返回 2087 行而不是预期的 35 行。

Obj.objects.exclude(expired=None).count() 返回 2122,所以所有的行。

【问题讨论】:

  • .filter(expired__isnull=False) 应该可以解决问题。您究竟检索了哪些不应该检索的行?
  • 我更新了原来的问题,因为有更多空间。
  • Obj.objects.filter(expired).count() 返回什么?
  • 错误。 expired 未定义。

标签: django python-2.7 django-models


【解决方案1】:

查询很好,问题出在模型定义中。它应该是空白=True 和 null=True。

【讨论】:

    【解决方案2】:

    尝试更改模型中的字段

    expired = models.DateTimeField(
            auto_now=False,
            null=True,
            blank=True
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      相关资源
      最近更新 更多