from rest_framework import serializers from .models import Plant, PlantImage class PlantImageSerializer(serializers.ModelSerializer): class Meta: model = PlantImage fields = ['id', 'image'] # Fields to expose for each image class PlantSerializer(serializers.ModelSerializer): images = PlantImageSerializer(many=True, read_only=True) # Read existing images uploaded_images = serializers.ListField(child=serializers.ImageField(), write_only=True, required=False) # Accept new images class Meta: model = Plant fields = ['id', 'name', 'description', 'buy_price', 'sell_price', 'stock', 'images', 'uploaded_images'] # Include uploaded_images def create(self, validated_data): uploaded_images = validated_data.pop('uploaded_images', []) # Get images from request plant = Plant.objects.create(**validated_data) for image in uploaded_images: PlantImage.objects.create(plant=plant, image=image) # Save each image return plant def update(self, instance, validated_data): uploaded_images = validated_data.pop('uploaded_images', []) instance.name = validated_data.get('name', instance.name) instance.description = validated_data.get('description', instance.description) instance.buy_price = validated_data.get('buy_price', instance.buy_price) instance.sell_price = validated_data.get('sell_price', instance.sell_price) instance.stock = validated_data.get('stock', instance.stock) instance.save() for image in uploaded_images: PlantImage.objects.create(plant=instance, image=image) # Save new images return instance