Я не могу экспортировать изображение в CSV файл в Django Admin

Каждый раз, когда я экспортирую данные, все они экспортируются, но для изображения, которое там есть, я получаю только url изображения, а не фактическое изображение. Изображение экспортированного CSV файла

Поля базы данных, откуда я ее экспортирую

Я хочу, чтобы в CSV-файл экспортировалось фактическое изображение, а не путь хранения изображения. Если кто-нибудь знает, как это сделать, пожалуйста, помогите.

Чтобы экспортировать изображение в CSV-файл из Django Admin, вам нужно переопределить метод to_csv класса ModelAdmin для модели, имеющей поле image.

Вот пример того, как это можно сделать:

from django.http import HttpResponse
from django.utils.translation import gettext as _
from django.contrib import admin

class MyModelAdmin(admin.ModelAdmin):
  def to_csv(self, request, queryset):
    # Create a HttpResponse object with the appropriate CSV header
    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename= 
   {}.csv'.format(self.model._meta.verbose_name)

    # Create a CSV writer
    writer = csv.writer(response)

    # Write the headers
    headers = [field.name for field in self.model._meta.fields]
    writer.writerow(headers)

    # Write the rows
    for obj in queryset:
        # Get the image data
        image_data = obj.image.file.read()
        # Encode the image data as base64
        image_data_base64 = base64.b64encode(image_data).decode()
        # Write the row to the CSV file
        writer.writerow([image_data_base64] + [getattr(obj, field) for 
    field in headers[1:]])

    return response
   to_csv.short_description = _("Export CSV")

 # Register the model with the custom ModelAdmin class
 admin.site.register(MyModel, MyModelAdmin)

Этот код определяет пользовательский метод to_csv для класса MyModelAdmin, который экспортирует данные изображения как строку в кодировке base64. Данные изображения считываются из поля image модели, которое предположительно является FileField или его подклассом. Затем данные изображения в кодировке base64 добавляются к строкам...

Надеюсь, это поможет!

Вы не можете сохранить файлы в базе данных, а можете сохранить только адрес, где они хранятся. Но есть один способ - преобразовать файлы в формат base64 и сохранить их как строку или текст.

Вернуться на верх