simple-plant-archive-django/plant_catalog/catalog/serializers.py
2026-06-20 07:06:19 +02:00

41 lines
1.7 KiB
Python
Executable file

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