DateField转换为QuerySEt中的字符串格式

问题描述 投票:1回答:2
activitylist = sr.activity_set.all()
cell.paragraphs[0].text = activitylist.values_list('activityPlannedStartDate', flat = True)

我得到一个错误:'in'要求将字符串作为左操作数,而不是datetime.date

cell.paragraphs[0].text是我在Word中构建的docx中预定义表中的单元格。

请对此TypeError提供帮助。

谢谢你!

python django typeerror python-docx
2个回答
1
投票

您应使用strftime方法将日期格式设置为字符串。并使用string.join将值列表表示为逗号分隔的字符串:

formatted_dates = [date.strftime("%Y-%m-%d") for date in
                         activitylist.values_list('activityPlannedStartDate',
                                                  flat=True)]
cell.paragraphs[0].text = ', '.join(formatted_dates)

0
投票

尝试以下方法:

from django.db.models import F, Func, Value, CharField

qs.annotate(
  formatted_date=Func(
    F('date'),
    Value('dd.MM.yyyy hh:mm'),
    function='to_char',
    output_field=CharField()
  )
)

仅适用于支持to_char date type formatting function的数据库。 Postgres默认提供此功能。如果使用MSSQL后端,则可以将to_charFORMAT交换。对于Oracle,请参阅其文档等。>

评估查询集后,这会将注释formatted_date添加到返回的查询集中的每个对象。

© www.soinside.com 2019 - 2024. All rights reserved.