6

对于 Django 模型,我使用 django-import-export 包。

手册说我可以像这样导出目标模型中不存在的字段:

from import_export import fields

class BookResource(resources.ModelResource):
    myfield = fields.Field(column_name='myfield')

    class Meta:
        model = Book

http://django-import-export.readthedocs.org/en/latest/getting_started.html

如何从模型中导出函数的输出?例如 Book.firstword()

4

3 回答 3

11

这是你应该怎么做的(看看这个https://django-import-export.readthedocs.org/en/latest/getting_started.html#advanced-data-manipulation):

from import_export 导入字段、资源

类 BookResource(resources.ModelResource):
    firstword = fields.Field()

    def dehydrate_firstword(自我,书):
        返回 book.firstword()

    元类:
        型号 = 书

更新以回答 OP 评论

要按特定顺序返回字段,您可以使用export_orderMeta 选项(https://django-import-export.readthedocs.org/en/latest/api_resources.html?highlight=export_order#import_export.resources.ResourceOptions)。

于 2014-09-15T14:18:27.790 回答
3

与 Serafeim 建议的相比,还有一种代码更少的解决方案:

from import_export import fields, resources

class BookResource(resources.ModelResource):
    firstword = fields.Field(attribute='firstword')

    class Meta:
        model = Book
于 2017-08-26T08:35:16.083 回答
0

以防万一您需要获取该字段的完整 URL 并基于 @Serafeim 的解决方案

class CompanyModelResource(ModelResource):

    def dehydrate_local_logo(self, company):
        if company.local_logo and hasattr(company.local_logo, 'url'):
            return company.local_logo.url
        return company.local_logo

    class Meta:
        model = Company
于 2021-03-15T20:07:19.640 回答