AD
Size: a a a
AD
DO
AD
AD
AD
AD
AD
DO
DO
AD
AD
AD
DO
DO
class ProductImageSerializer(serializers.ModelSerializer):
class Meta:
model = ProductImage
fields = ('product', 'image_id', 'url',)
class ProductSerializer(serializers.ModelSerializer):
images = ProductImageSerializer(many=True, read_only=True)
class Meta:
model = Product
fields = ('product_id', 'title', 'images',)
DO
AD
class ProductImageSerializer(serializers.ModelSerializer):
class Meta:
model = ProductImage
fields = ('product', 'image_id', 'url',)
class ProductSerializer(serializers.ModelSerializer):
images = ProductImageSerializer(many=True, read_only=True)
class Meta:
model = Product
fields = ('product_id', 'title', 'images',)
DO
def create(self, validated_data):
images_data = validated_data.pop("images", []) # an empty list by default
product = Product.objects.create(**validated_data)
for image_data in images_data:
ProductImage.objects.create(product=product, **image_data)
return product
def update(self, instance, validated_data):
request = self.context['request']
instance.title = validated_data.get('title', instance.title)
new_images_data = request.data.get("images")
new_images_ids = [image.get("image_id") for image in new_images_data]
old_images = instance.images.all()
for old_image in old_images: # deleting unselected images
if old_image.image_id not in new_images_ids:
old_image.delete()
for new_image_data in new_images_data:
ProductImage.objects.update_or_create(**new_image_data)
instance.save()
return instance
DO
AD
AD