使用restframework做反序列化的时候,字符串没有转换成对象

网页报错 'str' object has no attribute 'productmodel_set'

如下是代码

    manufacturer = serializers.CharField(required=True,label="制造商",help_text="制造商")
    model_name = serializers.CharField(required=True,label="服务器型号",help_text="服务器型号")

    # 验证 并创建实例
    def validated_manufacturer(self,value):
        try:
            return Manufacturer.objects.get(vendor_name__exact=value)
        except Manufacturer.DoesNotExist:
            return self.create_manufacturer(value)
        # return  value

    # def validate(self, attrs):
    #     manufacturer_obj = attrs["manufacturer"]
    #     mod_name = attrs["model_name"]
    #     try:
    #         manufacturer_obj.productmodel_set.get(model_name__exact=mod_name)
    #     except ProductModel.DoesNotExist:
    #         self.create_product_model(manufacturer_obj, mod_name)
    #     return attrs

    def validate(self, attrs):
        manu_obj = attrs['manufacturer']
        mod_name = attrs["model_name"]
        try:
            mod_name = manu_obj.productmodel_set.get(model_name__exact=mod_name) # 问题
        except ProductModel.DoesNotExist:
            mod_name = self.create_product_model(manu_obj, mod_name)
        return attrs


    def create(self, validated_data):
        return Server.objects.create(**validated_data)


    def create_manufacturer(self, vendor_name):
        return Manufacturer.objects.create(vendor_name=vendor_name)

    def create_product_model(self, manu_obj, model_name):
        return ProductModel.objects.create(modle_name = model_name, vendor = manu_obj)

是因为版本的问题吗,看网上很多人都是这么写的,小白 很多东西不懂,希望可以请教下

评论 0