Как импортировать изображения ImageField из excel, используя Django import_export?
Я использую django-import-export, файл Excel как file.xlsx
при импорте ImageField изображение сохраняется как ссылка "C:\Users\hp\Desktop\images\gallery\29.jpg", а не как реальное изображение в базе данных.
models.py
class Product(models.Model):
name = models.CharField( max_length=200, verbose_name='Nom')
slug = models.SlugField( max_length=150, unique= True, verbose_name='URL')
reference = models.CharField( max_length=200, verbose_name='Référence', unique=True,
blank=True, null=True)
def __str__(self):
return self.name
class PhotoProduct(models.Model):
image = models.ImageField(upload_to='images/produits')
actif = models.BooleanField(verbose_name='actif', default=True)
product = models.ForeignKey(Product, related_name="photos", on_delete=models.CASCADE)
def __str__(self):
return str(self.product)
###########
ressources.py
class PhotoProductAdminResource(resources.ModelResource):
product = fields.Field(column_name='product', attribute='product',
widget=ForeignKeyWidget(Product, field='id'))
class Meta:
model = PhotoProduct
fields = (
'id',
'product',
'actif',
'image',
)
###########
admin.py
@admin.register(PhotoProduct)
class PhotoProductAdmin(ImportExportModelAdmin):
list_display = ('id', 'product', 'actif')
list_display_links = ('id','product', )
list_editable = [ 'actif']
resource_class = PhotoProductAdminResource
form = PhotoProductModelForm
В модели PhotoProduct
любой сохраненный экземпляр с изображением будет иметь его относительный путь (начиная с параметра upload_to
), сохраненный в базе данных. примером может быть "images/produits/patate.png".
Вот рабочий прием для изображений, которые хранятся в одной папке.
если все ваши изображения товаров хранятся в
."C:\Users\hp\Desktop\images"
, вы можете просто скопировать эту папку и вставить ее в ваш djangoSTATIC_ROOT/images/produits
импортируйте все ваши
PhotoProduct
xlsx листы со ссылками на изображения, как указано выше.