Django:django-import-export,更改文件名

时间:2016-02-03 19:52:44

标签: python django

我想就此事请求协助

我正在使用django-import-export将我的数据导出到Excel,我想更改导出文件名。

我试图搜索,但没有找到相关的解决方案。

那么,是否可以更改文件名?如果是的话,在哪里?或者至少在某种程度上说这个文件来自一个可读来源(我正在命名我的模型:rep,appdata等等,所以如果我导出信息,用户就无法理解它(是它坏?))

尝试verbose_name = u'your-fancy-class-name',但我导出的文件名仍由模型类本身命名(appdata,rep等)

提前致谢。

2 个答案:

答案 0 :(得分:1)

我使用Django Admin执行了以下操作:

admin.py

from import_export.admin import ImportExportActionModelAdmin

class MyModelAdmin(ImportExportActionModelAdmin):
    # ...
    #Your configs and code
    def get_export_filename(self, file_format):
        filename = "%s.%s" % ("your_custom_filename",
                             file_format.get_extension())
        return filename

原始代码位于Import-Export源代码中,特别是在ExportMixin类的/import_export/admin.py中。由于ImportExportActionModelAdmin继承了此类,因此我们基本上覆盖了该方法。

答案 1 :(得分:0)

在您的admin.py中:

public class PaginatedList<T> 
{
    public int PageIndex { get; set; }
    public int TotalPages { get; set; }
    public List<T> Items { get; set; }

    public PaginatedList(List<T> items, int count, int pageIndex, int pageSize)
    {
        PageIndex = pageIndex;
        TotalPages = (int)Math.Ceiling(count / (double)pageSize);
        Items = items;
    }

    public bool HasPreviousPage
    {
        get
        {
            return (PageIndex > 1);
        }
    }

    public bool HasNextPage
    {
        get
        {
            return (PageIndex < TotalPages);
        }
    }
    public static async Task<PaginatedList<T>> CreateAsync(
       IQueryable<T> source, int pageIndex, int pageSize)
    {
        var count = await source.CountAsync();
        var items = await source.Skip(
            (pageIndex - 1) * pageSize)
            .Take(pageSize).ToListAsync();
        return new PaginatedList<T>(items, count, pageIndex, pageSize);
    }
}