使用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