39 lines
1.3 KiB
Python
Executable File
39 lines
1.3 KiB
Python
Executable File
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"]
|