У меня есть две модели, родитель и его элементы
class Parent(models.Model):
#fields
class ParentItems(models.Model):
parentId = #parentId
#fields
, и я хочу создать метод POST parent/
с включенными ParentItems, например
{
"parentField": "value",
"parentItems": [
{
"parentItemsField": "value"
}
]
}
Таким образом, я создаю Parent
представление, используя ModelViewSet
, а затем сериализатор:
class ParentItemSerializer(serializers.ModelSerializer):
#serializer
class ParentSerializer(serializers.ModelSerializer):
parentItems = ParentItemSerializer(many=True, required=True, write_only=True)
def _createParentItems(self, parentItem, parent):
for item in parentItem:
item['parent'] = parent.id
parentItemSerializer = ParentItemSerializer(data=item)
if parentItemSerializer.is_valid(raise_exception=True):
itemSerializer.save()
def create(self, validated_data):
with transaction.atomic():
parentItems = validated_data.pop('parentItems')
createdData = super(ParentSerializer, self).create(validated_data)
# create the parent item
self._createParentItems(parentItems, createdData)
return createdData
Я добавляю поле parentItems
в ParentSerializer
, внутри метода create
я выскакиваю parentItems
ипередайте его в _createParentItems
для создания предметов.
но это не работает, parentItems уже является объектом.когда я звоню parentItemSerializer.is_valid(raise_exception=True)
это ошибки.
Как сохранить объект из другого сериализатора в django rest?я должен использовать другое поле сериализатора?
Пробовал с помощью OrderedDict, он не работает, он не передавал элементы в validated_data