Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 从Fullname字段生成用户名并添加8个字符字符串_Django_Django Models_Django Rest Framework_Django Views - Fatal编程技术网

Django 从Fullname字段生成用户名并添加8个字符字符串

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

我想在注册过程中根据每个用户的姓名为其生成唯一的用户名,用户可以稍后更改

my models.py: 示例:全名:abc.mc用户名:abc.mc#fdg415

我正在使用drf获取这些数据,在这样做的同时,我想填写用户名字段

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)