Сохранение отношений внешних ключей с помощью DRF
Я пытаюсь сохранить отношения внешних ключей с помощью сериализатора, я не знаю, где я ошибаюсь, я провел часы, думая о нем сейчас, похоже, не понимаю, где кроется ошибка
class Catalogs(viewsets.ModelViewSet):
queryset = Catalog.objects.all()
serializer_class = CatalogSerializer
def create(self, request, *args, **kwargs):
if request.data:
serialized_data = self.get_serializer(
data = request.data
)
сериализатор
class CatalogSerializer(serializers.ModelSerializer):
catalog_products = CatalogProductsSerializer(source = 'catalogproducts_set',many=True)
def create(self,validated_data):
client_id = validated_data.pop('id')
catalog_obj = Catalog.objects.create(
client = User.objects.get(id=client_id),
)
CatalogProducts.objects.create(
catalog = catalog_obj,
**validated_data
)
return catalog_obj
class Meta:
model = Catalog
fields = ['created_by','client','catalog_products','created_datetime','is_active']
Трудно сказать, что не так, не видя сообщения об ошибке.
Но вот то, что вам нужно изменить:
serialized_data
- это не фактические сериализованные данные, а экземпляр сериализатора. Вам необходимо вызвать метод save()
сериализатора для сохранения экземпляра и метод data()
для получения сериализованных данных.
serializer_cls = self.get_serializer()
serializer = serializer_cls(data=request.data)
serializer.is_valid(raise_exception=True)
catalog_instance = serializer.save()
catalog_serialized_data = serializer.data()