zoukankan      html  css  js  c++  java
  • django.db.utils.IntegrityError: (1062, "Duplicate entry '' for key 'phone'")

    起因:创建用户的时候老是报错。

    之前是连接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"]
    

    总结: 这是一个非常低级的错误,用了三个小时来解决问题。

  • 相关阅读:
    mysql大数据的分表
    php settype()和gettype()
    php的类型转换
    php 时间戳和时间的转换
    mysql的数据类型
    thinkphp vender
    (function(){})();和(function(){}())每个括号的用途和区别
    数字的空洞 水 南邮NOJ 1071
    111... 南邮NOJ 1079
    阿里在线笔试题 折半方法求最接近sum值
  • 原文地址:https://www.cnblogs.com/lance-lzj/p/13841713.html
Copyright © 2011-2022 走看看