【问题标题】:Extract date from datetime dictionary in django queryset从 django 查询集中的日期时间字典中提取日期
【发布时间】:2021-01-05 21:14:27
【问题描述】:

在这上面花了太多时间,所以我问一下,

queryset = MyModel.objects.filter(id=id).values('send_date')

结果是这样的

<QuerySet [{'send_date': datetime.date(2020, 9, 30)}]>

尝试获取2020, 9, 30

我尝试了sd=queryset.strftime('%Y-%m-%d')sd=datetime.strptime(max(queryset.keys()),'%Y-%m-%d'),甚至尝试了sd=queryset['send_date']sd=queryset.get('send_date')for key,value in queryset.items() 导致错误"queryset has no items() attr"

【问题讨论】:

    标签: python-3.x django datetime django-queryset


    【解决方案1】:

    一般查询集中可能有多个项目,因此您需要遍历它的值

    queryset = MyModel.objects.filter(id=id).values('send_date')
    for date_value in queryset:
       print(date_value["send_date"])
    

    如果你确定你在那里只有一个值,那么你可以得到值

    queryset[0]["send_date"]
    

    【讨论】:

      【解决方案2】:

      它是否必须是一个查询集,因为您的过滤器参数是 ID(我猜这是唯一的)?

      如果你知道你得到的是一个单一的对象,你可以这样做:

      MyModel.objects.get(id=id).send_date.strftime('%Y, %m, %d')
      

      如果你想保留过滤器,你可以像这样在数组中获取日期:

      [send_date.strftime('%Y, %m, %d') for send_date in MyModel.objects.filter(id=id).values_list('send_date', flat=True)]
      

      【讨论】:

      • 对我不起作用。我得到“查询集没有发送日期属性”
      • 您是否将.filter() 替换为.get()
      • 不记得了,但接受的答案也解决了,所以我猜你们俩都是对的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 2013-12-23
      • 2011-05-30
      • 1970-01-01
      • 2020-08-14
      • 1970-01-01
      相关资源
      最近更新 更多