Я отправляю запрос на публикацию API со следующим текстом в теле запроса для сериализации в виде документа EventSerializer, владельцы которого сохраняются в виде списка встроенных документов:
class UserRef(EmbeddedDocument):
id = fields.ReferenceField(User, required=True)
first_name = fields.StringField(max_length=255, required=True)
last_name = fields.StringField(max_length=255, required=True)
email = fields.EmailField(max_length=255, required=True)
class Event(Document):
name = fields.StringField(max_length=255, required=True)
name_english = fields.StringField(max_length=255, required=True)
starts_on = fields.DateTimeField(required=True)
ends_on = fields.DateTimeField(required=True)
local = fields.StringField(max_length=255, required=True)
description = fields.StringField(max_length=255, required=True)
owners = fields.EmbeddedDocumentListField(UserRef, required=False)
serializers.py:
class UserRefSerializer(serializers.EmbeddedDocumentSerializer):
class Meta:
model = UserRef
class EventSerializer(serializers.DocumentSerializer):
owners = UserRefSerializer(many=True)
class Meta:
ref_name = "Event"
model = Event
fields = ["id", "name", "name_english", "starts_on", "ends_on", "local", "description", "owners"]
def create(self, validated_data):
owners_data = validated_data.pop("owners")
event = Event.objects.create(**validated_data)
event.owners = []
for owner_data in owners_data:
event.owners.append(owner_data)
event.save()
return event
views.py:
class EventViewSet(viewsets.ModelViewSet):
queryset = Event.objects.all()
serializer_class = EventSerializer
Когда я запускаю почтовый запрос, объект Event сохраняется; однако список владельцев (список встроенных документов) не сохраняется внутри события. Это просто пустой список []. Что я здесь делаю не так?