2024-10-05 17:30:35 +02:00
|
|
|
from rest_framework import serializers
|
2025-03-02 10:43:19 +01:00
|
|
|
from .models import Plant, PlantImage
|
|
|
|
|
|
|
|
|
|
class PlantImageSerializer(serializers.ModelSerializer):
|
|
|
|
|
class Meta:
|
|
|
|
|
model = PlantImage
|
|
|
|
|
fields = ['id', 'image'] # Fields to expose for each image
|
|
|
|
|
|
2024-10-05 17:30:35 +02:00
|
|
|
|
|
|
|
|
class PlantSerializer(serializers.ModelSerializer):
|
2026-06-20 07:06:19 +02:00
|
|
|
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
|
2025-03-02 10:43:19 +01:00
|
|
|
|
2024-10-05 17:30:35 +02:00
|
|
|
class Meta:
|
|
|
|
|
model = Plant
|
2026-06-20 07:06:19 +02:00
|
|
|
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
|
|
|
|
|
|