from rest_framework import serializers from outbo.apps.photobriefing.models import BriefItem from outbo.apps.photobriefing.serializers import BriefItemPhotoSerializer class BaseBriefItemSerializer(serializers.ModelSerializer): class Meta: model = BriefItem class BriefItemSerializer: class List(BaseBriefItemSerializer): photos = BriefItemPhotoSerializer.List(many=True) class Meta(BaseBriefItemSerializer.Meta): fields = ["id", "category", "title", "description", "photos"] class Create(BaseBriefItemSerializer): photos = BriefItemPhotoSerializer.Create(many=True) class Meta(BaseBriefItemSerializer.Meta): fields = ["category", "title", "description", "photos"] def create(self, validated_data): photos = validated_data.pop("photos", None) instance = super().create(validated_data) if photos is not None: for photo in photos: photo["item"] = instance BriefItemPhotoSerializer.Create().create(photo) return instance class AfterCreate(BaseBriefItemSerializer): photos = BriefItemPhotoSerializer.List(many=True) class Meta(BaseBriefItemSerializer.Meta): fields = ["id", "category", "title", "description", "photos"]