首页 > 解决方案 > 我收到完整性错误,在 django 中将数据发送到 POST api 时

问题描述

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

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

网址.py

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

模型.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

序列化程序.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.i 将更多用户信息添加到数据库中。我使用 djoser 来注册用户。每当我尝试通过邮递员添加用户时,它都会抛出 IntegrityError 。我找不到解决方案

标签: djangodjango-modelsdjango-rest-framework

解决方案


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

user = UserCreateSerializer(read_only=True)

我认为这可能是问题所在


推荐阅读