import re model_str = ''' class Type(models.Model): name = models.CharField('类型名称', max_length=100) def __str__(self): return "%s" % self.name def natural_key(self): return (self.name) ''' class_name = '' col_name_list = [] model_str_list = model_str.split(':') # print(model_str_list[0]) temp_class = model_str_list[0] matchObj = re.match( r".*class (.*)\(models.Model", model_str, re.M|re.I|re.S) if matchObj: print(matchObj.group(1)) class_name = matchObj.group(1) else: print("not found") # print(model_str_list[1]) row_list = model_str_list[1].split("\n") for _ in row_list: if "=" in _: # print(_) = models. matchObj = re.match(r"(.*) = models\.", _, re.M | re.I | re.S) if matchObj: print(matchObj.group(1)) col_name_list.append(matchObj.group(1).replace(' ','')) fields_str = "(" update_str = "" for _ in col_name_list: update_str += "instance." + _ + " = validated_data.get(\'" + _ + "\',instance." + _ + ")\n\t\t" if fields_str[-1] == '(': fields_str += "\'"+ _ +"\'" else: fields_str += ",\'" + _ + "\'" fields_str+= ')' # ----------------------------- start ------------------------------------------- print('----------------------------- start -------------------------------------------') print('----------------------------- start -------------------------------------------') print('class '+ class_name +'Serializer(serializers.ModelSerializer):') print("\ class Meta:\n\ model = "+ class_name +"#\n\ fields = "+ fields_str ) print("\n\ def create(self,validated_data):\n\ #传入验证过的数据, 创建并返回`"+class_name+"`实例。\n\ return "+ class_name +".objects.create(**validated_data)\n\ ") print("\n\ def update(self,instance,validated_data):\n\ #传入验证过的数据, 更新并返回已有的`"+ class_name +"`实例。\n\ "+ update_str + "instance.save()\n\t\t\ return instance\n\ ")
django 根据model 生成 Serializer
猜你喜欢
转载自blog.csdn.net/countofdane/article/details/84027944
今日推荐
周排行