简体   繁体   English

为每个用户生成唯一的 id(8 位)

[英]generating unique id(8 digits) for every user

my models.py is:我的models.py是:

class clients(models.Model):
    client_id = models.IntegerField(unique=True, null=False, blank=False, primary_key=True)
    '
    '

my serializers.py is:我的 serializers.py 是:

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = clients
        fields = ('client_identity_id','client_id','client_firstname','client_middlename','client_lastname','client_country','money','client_num')
        read_only_fields = ('money','client_id')

my views.py is:我的views.py是:

def post(self,request):
        data=request.data
        serializer = UserSerializer(data=data)
        if serializer.is_valid():
            serializer.save()
            client_A = clients.objects.get(client_identity_id=data['client_identity_id'])
            def create_unique_id():
                id=int(''.join(random.choices(string.digits, k=8)))
                return id
            create_unique_id()
            unique = False
            while not unique:
                if not clients.objects.get(client_id=id):
                    unique = True
                else:
                    create_unique_id()
            client_A.client_id = id
            client_A.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

when i make a post request it show me error "Field 'client_id' expected a number but got built-in function id", what should i do?当我发出帖子请求时,它显示错误“字段'client_id'需要一个数字,但有内置的function id”,我该怎么办? what i want is, when i make a post request it should generate an 8 digits unique id and save it,, and how can i generate an 8 length unique id contain letters and numbers??我想要的是,当我发出一个帖子请求时,它应该生成一个 8 位数的唯一 ID 并保存它,以及如何生成一个包含字母和数字的 8 位长度的唯一 ID?

Create one function somewhere in your project to generate unique number and replace your model something like this and remove logic for generating id from views.在项目的某处创建一个 function 以生成唯一编号并替换您的 model 类似的东西,并删除从视图中生成 id 的逻辑。

class clients(models.Model):
    client_id = models.IntegerField(unique=True, null=False, blank=False, primary_key=True, default=function_name)
    '
    '

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM