首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Django DateTimeField 指定日期筛选(How can I filter a date of a DateTimeField in Django)

Django DateTimeField 指定日期筛选(How can I filter a date of a DateTimeField in Django)

作者头像
卓越笔记
发布2023-02-18 14:33:12
发布2023-02-18 14:33:12
1.1K0
举报
文章被收录于专栏:卓越笔记卓越笔记

models.py

代码语言:javascript
复制
class AnchorBindAgent(models.Model):
    """
    主播绑定到代理,绑定规则
    """
    end_time_default = (timezone.now() + timezone.timedelta(days=15)).date()

    agent = models.ForeignKey(verbose_name="代理绑定", to=User, on_delete=models.DO_NOTHING)
    anchor = models.ForeignKey(verbose_name="主播名称", to=Anchor, on_delete=models.DO_NOTHING)
    proportion = models.FloatField(verbose_name="分成比例(%)", default=10, help_text="0 到 100 整数或小数")

    start_time = models.DateField(verbose_name="生效日期", default=timezone.now)
    end_time = models.DateField(verbose_name="失效日期", default=end_time_default)

    create_time = models.DateTimeField(verbose_name="创建时间", auto_now_add=True)  # timezone.now 不要加括号
    update_time = models.DateTimeField(verbose_name="更新时间", auto_now=True)

views.py

代码语言:javascript
复制
def yesterday_new_anchor(request):
    """
    我的主播
    :param request:
    :return:
    """
    title = "昨日绑定主播"
    description = "列出您昨日绑定的主播"

    # 昨日
    # yesterday = datetime.now() - timedelta(days=1)
    yesterday = timezone.now() - timezone.timedelta(days=1, hours=0, minutes=0, seconds=0)
    # 昨日绑定主播
    anchors = AnchorBindAgent.objects.order_by("-create_time").filter(
        agent=request.user,
        create_time__year=yesterday.year,
        create_time__month=yesterday.month,
        create_time__day=yesterday.day
    )

我如上代码写的 date 过滤,只要筛选到月份就没数据了,实际上是有的数据得:

代码语言:javascript
复制
>>> AnchorBindAgent.objects.order_by("-create_time").filter(agent__username="fjiabinc").filter(create_time__year=yesd.year)[1]
<AnchorBindAgent: fjiabinc_ID:724313097_昵称:一生只宠@@@婷_15.0>
>>> AnchorBindAgent.objects.order_by("-create_time").filter(agent__username="fjiabinc").filter(create_time__year=yesd.year)[1].create_time
datetime.datetime(2020, 4, 21, 9, 53, 48, 959740, tzinfo=<UTC>)
>>> yesd
datetime.datetime(2020, 4, 21, 15, 46, 1, 849153, tzinfo=<UTC>)
>>> AnchorBindAgent.objects.order_by("-create_time").filter(agent__username="fjiabinc").filter(create_time__year=yesd.year, create_time__month=yesd.month)
<QuerySet []>

解决方案:

代码语言:javascript
复制
anchors = AnchorBindAgent.objects.order_by("-create_time").filter(
    agent=request.user,
    create_time__contains=yesterday.date()
)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-4-23 1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档