@blazer05

Как сделать дополнительные изображения для товара?

Здравствуйте.
В модели продукта сделал поле для загрузки изображения но по умолчанию загружается для одного товара одно изображение, как сделать чтоб для одного товара было 5-6 изображений? Я пробовал сделать другую модель в которой будет связь fk на модель продукта и в которой будут дополнительные картинки к основному продукту, но проблема та же можно загрузить только одну картинку.
class Product(models. Model):
    image = models.ImageField(upload_to='products/%y/%m/%d/', blank=True, verbose_name='Изображение товара')

class Albom(models.Model):
    name = models.CharField(max_length=100, blank=True, verbose_name='Название')
    product = models.ForeignKey('Product', on_delete=models.CASCADE, related_name='images', null=True)
    images = models.ImageField(upload_to='products/%y/%m/%d/', blank=True, verbose_name='Изображение')
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
Astrohas
@Astrohas
Python/Django Developer
blazer05: в админке делается через Inline(https://docs.djangoproject.com/en/1.11/ref/contrib... В формах через inline_formset(https://docs.djangoproject.com/en/1.11/topics/form...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Я делал вот так.

models.py
def images_upload_folder(instance, filename):
    return '{model}s/{filename}'.format(model=instance._meta.model_name, filename=filename)

class BannerImage(TimeStampedModel):
    banner = models.ForeignKey(Banner, related_name='images')
    image = models.ImageField(upload_to=images_upload_folder,  blank=True)
    sort = models.IntegerField(default=1000, verbose_name='Сортировка')
    is_active = models.BooleanField(default=True, verbose_name='Включить')

    objects = models.Manager()
    active = IsActiveManager()

    def __str__(self):
        return "{banner} > {file}".format(banner=self.banner.title, file=self.image.file)


admin.py
class BannerImageInLine(admin.TabularInline):
	model = BannerImage

class BannerAdmin(admin.ModelAdmin):
	inlines = [
	    BannerImageInLine
	]


admin.site.register(Banner, BannerAdmin)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
30 апр. 2024, в 22:44
500 руб./в час
30 апр. 2024, в 21:45
20000 руб./за проект
30 апр. 2024, в 21:36
1500 руб./в час