Как использовать API rest Framework для изображений в Django
hello guys Я пытаюсь создать модель продукта для моих деталей продукта .У меня есть несколько изображений для одного продукта .Я хочу добавить несколько изображений в мою панель django dashboard так что я написал эти коды теперь я хочу показать их в моем шаблоне но я не могу почему? Вот мой:
Models.py :
class Product(models.Model):
name =models.CharField(max_length=100,verbose_name='نام محصول')
header_pic = models.ImageField(upload_to="images/products",verbose_name='تصویر اصلی',
default='images/product/product1.png')
created_date =models.DateField(auto_now_add=True)
description = RichTextField(blank = True , null=True)
class Image(models.Model):
product = models.ForeignKey(Product, default=None, on_delete=models.CASCADE, related_name="product_images")
image = models.ImageField(upload_to="images/products/product-images",verbose_name='تصویر', null= True , blank=True)
@property
def get_image_url(self):
return self.image.url
serializer.py :
from django.db.models import fields
from rest_framework import serializers
from .models import Product, Image
class ImageSerializer(serializers.ModelSerializer):
class Meta:
model = Image
fields = "__all__"
class ProductSerializer(serializers.HyperlinkedModelSerializer):
images = serializers.SerializerMethodField()
def get_images(self, product):
return ImageSerializer(product.product_images.all(), many=True).data
class Meta:
model = Product
fields = ('id','images')
views.py :
class ImageViewSet(viewsets.ModelViewSet):
queryset = Product.objects.all()
serializer_class = ProductSerializer
admin.py
from django.contrib import admin
from .models import Product , ProductCategory ,Image
from . import models
admin.site.register(ProductCategory)
class ImageAdmin(admin.StackedInline):
model = models.Image
extra = 4
@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
inlines = [ImageAdmin]
readonly_fields=('views', )
class Meta:
model = Product
@admin.register(Image)
class ImageAdmin(admin.ModelAdmin):
pass
template.html :
<div class="product-bottom-slider owl-theme owl-carousel" id="sync2">
{% for img in images %}
<div class="slide-top-item">
<div class="slide-inner">
<img src="{{img.image.url}}" alt="product">
</div>
</div>
{% endfor %}
</div>
Установили ли вы Pillow?
Вы можете сделать следующее:
class Image(models.Model):
image = models.ImageField(upload_to='static/img/card_image/%Y/%m/%d', blank=True)
template.html:
<img src="/{{ product.image }}" height="" width="" alt="{{ product.product_name }}" class="img-fluid" alt="">