起因:创建用户的时候老是报错。
之前是连接sqlite数据库的,后面修改成连接mysql数据库,然后发现上述错误
原因:
发现自己在序列化的时候没有把phone添加进去,导致每次生成新数据的时候,phone行都为空,model定义的时候指定了phone参数unique=True,所以一直报错,表格迁移没问题,数据什么的都没有问题。
解决方法:
在序列化中把字段phone添加进去。
附源码:
model:
from django.db import models
from common.models import BaseModel
class User(BaseModel):
username = models.CharField(max_length=32, unique=True)
password = models.CharField(max_length=32, null=True)
phone = models.CharField(max_length=16, unique=True)
class Meta:
db_table = "user"
view:
def register(self, request):
username = request.data.get("username")
password = request.data.get("password")
phone = request.data.get("phone")
data = {
"username": username,
"password": password,
"phone": phone,
}
serilizer = Userserilizer(data=data) # 这一句啊,每次保存数据都通过它,报错的时候一直没有添加phone,所以每次生成数据都为空,然后一直报错!!!
if not serilizer.is_valid():
data = {
"msg": "用户已存在",
"status": status.HTTP_400_BAD_REQUEST,
"error": serilizer.errors,
}
return Response(data=data)
serilizer.save()
data = {
"msg": "用户创建成功",
"status": status.HTTP_200_OK,
"data": serilizer.data
}
return Response(data=data)
原 serilizer.py: >
from rest_framework import serializers
from users.models import User
class Userserilizer(serializers.ModelSerializer):
class Meta:
model = User
fields = ["id", "username", "password"]
新:
from rest_framework import serializers
from users.models import User
class Userserilizer(serializers.ModelSerializer):
class Meta:
model = User
fields = ["id", "username", "password", "phone"]
总结: 这是一个非常低级的错误,用了三个小时来解决问题。