【问题标题】:i'm getting integrity error, When sending data to POST api in django我收到完整性错误,在 django 中向 POST api 发送数据时
【发布时间】:2020-08-25 14:11:55
【问题描述】:

当我将日期发送到我的 api 时,它会引发以下错误

 IntegrityError at /api/add/
NOT NULL constraint failed: api_userinfo.user_id

urls.py

path('add/',views.UserAdditionalView.as_view())

models.py

class User(AbstractUser):
    # username = None
    email = models.EmailField(verbose_name='email',max_length=50,unique=True)
    #phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$')
    #phone = PhoneNumberField(unique=True,blank=False,null=False)
    phone =  models.CharField(max_length=17,blank=True)

    REQUIRED_FIELDS = [
        'first_name',
        'last_name',
        'phone',
        'username',
    ]

    USERNAME_FIELD = 'email'

    def get_username(self):
        return self.email

class UserInfo(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE)
    address = models.CharField(max_length=50)
    zipcode = models.CharField(max_length=20)

    def __str__(self):
        return str(self.user)

我的看法是 views.py

class UserAdditionalView(generics.ListCreateAPIView):
    queryset = UserInfo.objects.all()
    serializer_class = UserAdditionalSerializers

serializers.py

class UserCreateSerializer(UserCreateSerializer):

     class Meta(UserCreateSerializer.Meta,):
         model = User
         fields = (
        'id',
        'email',
        'username',
        'password',
        'first_name',
        'last_name',
        'phone',
     
         )



class UserAdditionalSerializers(serializers.ModelSerializer):
     user = UserCreateSerializer(read_only=True)
     class Meta:
          model = UserInfo
          fields = (
             'user',
             'address',
             'zipcode',
             )

我正在尝试通过 api 向数据库添加更多用户信息。我使用 djoser 来注册用户。每当我尝试通过邮递员添加用户时,它都会抛出 IntegrityError 。我找不到解决办法

【问题讨论】:

    标签: django django-models django-rest-framework


    【解决方案1】:

    就像我怀疑你在这里有readonly=True

    user = UserCreateSerializer(read_only=True)
    

    我认为这可能是问题

    【讨论】:

    • 对不起,我已经添加了海瑞器,你能检查一下
    • 解决了问题,但我有一个新错误。 'user': ['This field is required'],用户字段中期望什么值..??
    • 嗨,很抱歉回复晚了。我不确定,但您可能必须覆盖视图的 create 方法才能将用户添加到请求中。
    • 好的。我会试试的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多