我的models.py是:
class clients(models.Model):
client_id = models.IntegerField(unique=True, null=False, blank=False, primary_key=True)
'
'
我的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')
我的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)
当我发出发布请求时,它向我显示错误“字段'client_id'需要一个数字,但具有内置函数ID”,我该怎么办? 我想要的是,当我发出发布请求时,它应该生成一个8位数的唯一ID并将其保存,并且如何生成一个包含字母和数字的8长度的唯一ID?
答案 0 :(得分:0)
在项目中的某处创建一个函数以生成唯一编号,并替换类似的模型,并删除用于从视图生成ID的逻辑。
class clients(models.Model):
client_id = models.IntegerField(unique=True, null=False, blank=False, primary_key=True, default=function_name)
'
'