Как я могу внести изменения в файл Django import_export csv перед его экспортом, не внося изменений в базу данных - PullRequest
0 голосов
/ 05 августа 2020

Как я могу отредактировать CSV-файл перед экспортом, используя Django import_export? Я знаю, что могу позвонить before_export, чтобы сделать что-то с набором запросов перед экспортом, но я специально хочу изменить все заданное целочисленное поле на «0» только для строк csv и не вносить изменения в базу данных.

class AdminResource(resources.ModelResource):
    def before_export(self, queryset, *args, **kwargs):
        ...
        # I can only edit the queryset here but I need to edit the rows of the csv and leave the database

1 Ответ

0 голосов
/ 06 августа 2020

Для этого можно использовать метод dehydrate(). Например, если вы хотите установить поле «цена» равным нулю, вы можете установить объявление ресурса следующим образом:

class BookResource(resources.ModelResource):

    def dehydrate_price(self, book):
        return 0

    class Meta:
        model = Book
        fields = ('id', 'name', 'price')

Выполнить с:

    dataset = BookResource().export()
    print(dataset)

Результат:

id|name      |price
--|----------|-----  
20|Triangles |0    
21|Rectangles|0
...