从 Django 查询集中的日期时间字典中提取日期

Extract date from datetime dictionary in django queryset

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

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"

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

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

如果您确定那里只有一个值,那么您可以获得值作为

queryset[0]["send_date"]

它是否必须是一个查询集,因为您的过滤器参数是 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)]