簡體   English   中英

如何使用django-import-export導出屬性值

[英]How to export property values with django-import-export

我的模特:

class TreeNode(MPTTModel):
    ...
    @property
    def pay_progress(self):
        return "{}/{}".format(self.annuities.exclude(fact_date=None).aggregate(Sum('total'))['total__sum'] or 0,
                             self.annuities.aggregate(Sum('total'))['total__sum'])

資源:

from import_export import resources
from models import TreeNode


class TreeNodeResource(resources.ModelResource):
    class Meta:
        model = TreeNode

視圖:

def export_treenode_csv(request):
    treenode_resource = TreeNodeResource()
    dataset = treenode_resource.export()
    response = HttpResponse(dataset.xls, content_type='application/vnd.ms-excel')
    response['Content-Disposition'] = 'attachment; filename="TreeNode.xls"'

    return response

但是此代碼僅導出存儲在數據庫中的字段。 如何將pay_progress屬性值添加到導出的報告中?

您可以利用dehydrate_ <fieldname>方法:

class TreeNodeResource(resources.ModelResource):
    pay_progress = fields.Field()

    class Meta:
        model = TreeNode

    def dehydrate_pay_progress(self, node):
        return node.pay_progress

我覺得這有點乏味。 如果有人有更好的解決方案,請毫不猶豫地提出。

編輯:您可以使用Field的命名參數attribute來獲取對象屬性/屬性,而無需使用dehydrate()

class TreeNodeResource(resources.ModelResource):
    pay_progress = fields.Field(attribute='pay_progress')

    class Meta:
        model = TreeNode

也可以使用雙下划線跟蹤關系

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM