Сохранение отношений внешних ключей с помощью 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()
Вернуться на верх