下面是我的模型Windows 10,postgress 12,django 3.0.7,python 3.7.6class User(AbstractBaseUser, PermissionsMixin): email = models.CharField(max_length=30) password = models.CharField(max_length=4000) first_name = models.CharField(default='', max_length=15) last_name = models.CharField(default='', max_length=15) login = models.CharField(max_length=15) age = models.IntegerField() street = models.CharField(blank=True, max_length=255) city = models.CharField(blank=True, max_length=255) zip = models.CharField(blank=True, max_length=10) role = models.CharField(default='', max_length=10) USERNAME_FIELD = 'email'当我发出发布请求时,出现以下错误File "C:\Users\Akila\Anaconda3\lib\site-packages\django\db\backends\utils.py", line 86, in _execute return self.cursor.execute(sql, params)psycopg2.errors.NotNullViolation: null value in column "id_id" violates not-null constraintDETAIL: Failing row contains (null, default).这是被调用的我的注册视图。@静态方法@api_view(['POST'])def sign_up(request): logging.debug("Trying to register a new user") data = common_methods.get_request_data(request) print(data) if check_user_exists(data['email']): return JsonResponse({'message': 'User with this email already exists'},status=status.HTTP_400_BAD_REQUEST) print(data['email']) create_user(data['email'], data['password'], data['fullName']) refresh = CustomTokenObtainPairSerializer.get_token( get_user_by_email(email=data['email'])) return JsonResponse({'token': { 'access_token': str(refresh.access_token), 'expires_in': str(refresh.access_token.lifetime.seconds), 'refresh_token': str(refresh) }})
1 回答
小唯快跑啊
TA贡献1863条经验 获得超2个赞
实际上我在 create_user() 方法中有这个
user_settings = UserSettings(id=user.id, theme='default')
user.save()
user_settings.save()
根据上面的代码 user.id 实际上是 null 。id 在用户保存到数据库后被分配。必须将其更改为下面才能使其正常工作
try:
user.save()
except Exception as e:
print(str(e))
raise Exception("Sorry couldn't save the user with email : " + user.email)
if check_user_exists(user.email):
user = get_user_by_email(email=user.email)
user_settings = UserSettings(id_id=user.id, theme='default')
user_settings.save()
else:
raise Exception("Sorry couldn't find the user with email : " + user.email)
添加回答
举报
0/150
提交
取消