Django 从Fullname字段生成用户名并添加8个字符字符串
我想在注册过程中根据每个用户的姓名为其生成唯一的用户名,用户可以稍后更改 my models.py: 示例:全名:abc.mc用户名:abc.mc#fdg415 我正在使用drf获取这些数据,在这样做的同时,我想填写用户名字段Django 从Fullname字段生成用户名并添加8个字符字符串,django,django-models,django-rest-framework,django-views,Django,Django Models,Django Rest Framework,Django Views,我想在注册过程中根据每个用户的姓名为其生成唯一的用户名,用户可以稍后更改 my models.py: 示例:全名:abc.mc用户名:abc.mc#fdg415 我正在使用drf获取这些数据,在这样做的同时,我想填写用户名字段 class RegisterSerializer(serializers.HyperlinkedModelSerializer): email = serializers.EmailField( required=True, val
class RegisterSerializer(serializers.HyperlinkedModelSerializer):
email = serializers.EmailField(
required=True,
validators=[UniqueValidator(queryset=HNUsers.objects.all())]
)
mobile_number = serializers.CharField(
required=True,
validators=[UniqueValidator(queryset=HNUsers.objects.all())]
)
required_formats = ['%d-%m-%Y', '%Y-%m-%d']
date_of_birth = serializers.DateField(format="%d-%m-%Y", input_formats=['%d-%m-%Y', 'iso-8601'])
class Meta:
model = HNUsers
fields = [
'full_name',
]
def create(self, validated_data):
return HNUsers.objects.create(full_name=validated_data['full_name'])
任何帮助都将不胜感激只需将其添加到您的验证数据中:
def create(self, validated_data):
full_name = validated_data.get('full_name')
validated_data['username'] = fullname + '#dcf' // whatever logic you want to use here
return super(RegisterSerializer, self).create(validated_data)
# or
# return HNUsers.objects.create(**validated_data)
您好,我试过了,但响应中有username=null和fullname=null。如果您在get()中调试并查看是否获得全名?@Mitesh编辑了我的响应,请使用serializer创建()。它就像一个符咒。。谢谢如果你不介意的话,你能解释一下为什么我的那个没用吗?再次感谢lot@Mitesh你是说像这样的?用户名=全名。替换(“”)+“#ds3f25s4f”
def create(self, validated_data):
full_name = validated_data.get('full_name')
validated_data['username'] = fullname + '#dcf' // whatever logic you want to use here
return super(RegisterSerializer, self).create(validated_data)
# or
# return HNUsers.objects.create(**validated_data)