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