django는 모델에 따라 Serializer를 생성합니다
2370 단어 django
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("
")
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." + _ + ")
\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:
\
model = "+ class_name +"#
\
fields = "+ fields_str )
print("
\
def create(self,validated_data):
\
# , `"+class_name+"` 。
\
return "+ class_name +".objects.create(**validated_data)
\
")
print("
\
def update(self,instance,validated_data):
\
# , `"+ class_name +"` 。
\
"+ update_str +
"instance.save()
\t\t\
return instance
\
")
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.