(自用防再踩坑记录1)实现名字直接转化为拼音并添加入接口
2018-12-29 本文已影响0人
十万个榴莲饼
首先安装汉字转拼音的第三方包,十分好用的包> pip install xpinyin
在serializers.py中的相应的serializer中添加如下代码:
from xpinyin import Pinyin
p = Pinyin()
class exp_userpro_list_Serializer(serializers.ModelSerializer): #exp_userpro为数据库表
"""
用户列表页显示的信息
"""
name_change_to_pinying = serializers.SerializerMethodField(help_text='名字转拼音') #添加字段(此字段数据库中不存在)
def get_name_change_to_pinying(self, obj): #定义此字段需要返回的数据
return p.get_pinyin(obj.name) #将名字转化为拼音
class Meta:
model = exp_userpro #数据库表
exclude = ('password','user_permissions','last_login','is_superuser','first_name','last_name',
'is_staff','date_joined','cardID','birthDate','gender',
'add_time','groups')
这是详情页面的serializer,也需要添加把名字转化成拼音的字段
class exp_userproSerializer(serializers.ModelSerializer):
"""
用户信息
"""
name_change_to_pinying = serializers.SerializerMethodField(help_text='名字转拼音')
def get_name_change_to_pinying(self, obj):
return p.get_pinyin(obj.name)
class Meta:
model = exp_userpro
exclude = ('password','user_permissions','last_login','is_superuser','first_name','last_name',
'is_staff','date_joined','cardID','birthDate','gender',
'add_time','groups',)
在views.py中相应的viewset中添加代码:
class exp_userproViewSet(viewsets.ModelViewSet):
"""
list
用户列表页
create:
创建用户信息表(需要创建两份)
delete:
删除用户信息
update:
修改用户信息
partial_update:
修改用户信息
"""
authentication_classes = (TokenAuthentication, SessionAuthentication)
permission_classes = [IsAuthenticated, ]
pagination_class = StandardResultsSetPagination
filter_backends = (DjangoFilterBackend,)
filter_class = exp_userproFilter
def get_queryset(self):
# return exp_userpro.objects.filter(id=self.request.user.id)
return exp_userpro.objects.filter(is_active=True)
def get_permissions(self):
if self.action == "retrieve":
return [permissions.IsAuthenticated()]
return []
def get_serializer_class(self):
if self.action == 'list':
return exp_userpro_list_Serializer #返回我们上面写的那个list_serializer
return exp_userproSerializer
def perform_create(self, serializer):
serializer.save()
添加完成后,如果没错那么应该添加成功了
效果:接口页面如下
"id": "2338727a-3db8-4d93-8564-d5c03027f236",
"timestampCreate": "2018-01-09T22:49:38.343494",
"name_change_to_pinying": "huang-fei-hu",
#此为添加的字段,将name转化为拼音,注意此字段在数据库中不存在
"is_active": true,
"oldId": "None",
"name": "黄飞虎",
"name_pinyin": "Huang Feihu",
"username": "hhuangfh",
"mobile": "**********",
"email": "**********.com"
-------完