使用 DRF 保存外键关系

saving foreign key relations using 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()