【发布时间】: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 date和lte date+1 -
我已经添加了我的模型。 @mike_thecode 我需要过滤所有日期为 2021-04-07 的对象,不考虑时间。我已经尝试了所有可能的组合,但过滤器仍然无法正常工作。
标签: django datetime django-rest-framework