使用Django

时间:2018-07-02 08:03:06

标签: django excel

使用django-excel并使用make_response(),我正在导出一个列日期,它是一个类似DateField的DateField:

2017-10-05T14:27:25.436299 + 00:00

我想将此字段设置为更具可读性的格式,如下所示: 2017/10/05

是否可以在导出视图中格式化日期?

这是我的观点:

import django_excel as excel


def export_client_download(request, atype):
    if request.user.groups.filter(name="Admin").exists():
        if atype == "clients":
            query_sets = Profile.objects.filter(user__groups__name='Clients')
            columns_names = [
                'user__id',
                'user__last_name',
                'user__first_name',
                'user__email',
                'user__date_joined'
            ]
            sheet = excel.pe.get_sheet(query_sets=query_sets, column_names=columns_names)
            sheet.row[0] = [
                'ID',
                'Last name',
                'First Name',
                'Email',
                'Date'
            ]
            return excel.make_response(sheet, 'xls', file_name="clients")

编辑:

我认为一种好方法是使用annotate()直接在查询集中设置“ user__date_joined”字段的格式。但是我不知道该怎么做...

1 个答案:

答案 0 :(得分:0)

TLDR,(我对django-excel没有任何经验)尝试这样的方法

In [1]: input = '2017-10-05T14:27:25.436299+00:00'

In [2]: from dateutil.parser import parse

In [3]: parse(input)
Out[3]: datetime.datetime(2017, 10, 5, 14, 27, 25, 436299, tzinfo=tzutc())

In [4]: format = '%d/%m/%Y'

In [5]: parse(input).strftime(format)
Out[5]: '05/10/2017'