【问题标题】:Filtering Datetime field by date not working in Django按日期过滤日期时间字段在 Django 中不起作用
【发布时间】:2021-07-03 18:54:14
【问题描述】:

我正在尝试仅按日期过滤 Datetime 模型字段并尝试过:

Content.objects.filter(created_at__date=params.get("event_date"))

event_date 参数的格式类似于 2021-04-07。我试过创建一个日期时间对象,也试过这个:

   search_params["created_at__lte"] = datetime.datetime(int(date[0]), int(date[1]), int(date[2]), 0, 0, 0)
    search_params["created_at__gte"] = datetime.datetime(int(date[0]), int(date[1])+1, int(date[2]), 0, 0, 0)

但是,所有这些方法都返回一个空查询集,它们应该返回一个结果。结果有一个日期时间字段(2021-04-07 23:00)。

编辑: 我的模型:

class Final_Content(models.Model):
    class Content_Type(models.TextChoices):
        ANIMATION = "ANIMATION", "Animation"
        AUDIO = "AUDIO", "Audio"
        GRAPHIC = "GRAPHIC", "Graphic"
        PHOTO = "PHOTO", "Photo"
        TEXT = "TEXT", "Text"
        VIDEO = "VIDEO", "Video"

    objects: models.Manager
    final_content_id = models.UUIDField(
        default=uuid.uuid4, editable=False, unique=True, verbose_name="Final Media ID"
    )
    title = models.CharField(max_length=150, verbose_name="Media Title")
    description = models.TextField(verbose_name="Description")
    thumbnail = models.URLField(verbose_name="Thumbnail")
    preview = models.URLField(verbose_name="Preview")
    tags = TaggableManager()
    event_time = models.DateTimeField(verbose_name="Event Time")
    created_at = models.DateTimeField(auto_now_add=True, verbose_name="Created At")

【问题讨论】:

  • 那么,您需要过滤所有日期时间等于 2021-04-07 23:00 的对象??
  • 请分享你的内容模型,特别是'created_at'和'date'字段之间的关系
  • 在 lte-gte 代码中,您混淆了运算符:应该是 gte datelte date+1
  • 我已经添加了我的模型。 @mike_thecode 我需要过滤所有日期为 2021-04-07 的对象,不考虑时间。我已经尝试了所有可能的组合,但过滤器仍然无法正常工作。

标签: django datetime django-rest-framework


【解决方案1】:

将以下查询集添加到您的视图集:

import datetime
queryset = Final_Content.objects.filter(created_at__date=datetime.date(2021, 4, 7))

在这里看到QuerySet API reference

【讨论】:

    猜你喜欢
    • 2015-03-06
    • 1970-01-01
    • 2022-08-22
    • 2018-01-25
    • 2016-12-09
    • 2014-03-22
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    相关资源
    最近更新 更多