2014-09-15 10 views
3

Для модели Django я использую пакет django-import-export.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()

ответ

5

Вот как вы должны это сделать (проверить это https://django-import-export.readthedocs.org/en/latest/getting_started.html#advanced-data-manipulation):

 
from import_export import fields, resources 

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

    def dehydrate_firstword(self, book): 
     return book.firstword() 

    class Meta: 
     model = Book 

Update, чтобы ответить на комментарий OP

Для возврата поля в определенном порядке, вы можете пользователь export_order Meta option (https://django-import-export.readthedocs.org/en/latest/api_resources.html?highlight=export_order#import_export.resources.ResourceOptions).

+0

работает как просил - спасибо! Терминология «обезвоживания» действительно меня отпустила. – Alveoli

+0

сейчас для бонуса :) Как я могу заказать вывод, чтобы это новое поле было последним столбцом (без явного указания поля EVERY)? – Alveoli

+0

Проверьте мои обновления PLS – Serafeim

1

Существует еще одно решение с меньшим количеством кода, чем предложенный Serafeim:

from import_export import fields, resources 

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

    class Meta: 
     model = Book 
Смежные вопросы