Django 自定义用户模型:IntegrityError:“is_superuser”列中的空值违反了非空约束

瑞玛·帕拉赫

我正在尝试在 Django 中创建一个自定义用户模型,然后根据 django-rest-auth 提供的内容创建 RESTAPI。

CustomUserModel 和 CustomUserManager 被定义为-

   from django.contrib.auth.models import (
      BaseUserManager, AbstractBaseUser
  )

class UserManager(BaseUserManager):
use_in_migrations = True

def create_user(self, email, name, phone_no, user_android_id, user_fcm_token,
                user_social_flag, user_fb_id, user_android_app_version, password=None):
    user = self.model(
        email = self.normalize_email(email),
        phone_no = phone_no,
        password=password,
        user_android_id = user_android_id,
        user_fcm_token = user_fcm_token,
        user_social_flag = user_social_flag,
        user_fb_id = user_fb_id,
        user_android_app_version = user_android_app_version,
        name = name,
    )
    # user.is_staff = False
    # user.is_superuser = True
    user.set_password(password)
    user.save(using=self._db)
    return user

def create_staffuser(self, email, name, phone_no, user_android_id, user_fcm_token,
                user_social_flag, user_fb_id, user_android_app_version, password):
    user = self.create_user(
        email,
        password=password,
        phone_no=phone_no,
        user_android_id=user_android_id,
        user_fcm_token=user_fcm_token,
        user_social_flag=user_social_flag,
        user_fb_id=user_fb_id,
        user_android_app_version=user_android_app_version,
        name=name,
    )
    user.is_staff = True
    user.is_admin = False
    user.is_superuser = True
    user.save(using=self._db)
    return user

def create_superuser(self, email, name, phone_no, user_android_id, user_fcm_token,
                user_social_flag, user_fb_id, user_android_app_version, password):
    user = self.create_user(
        email,
        password=password,
        phone_no=phone_no,
        user_android_id=user_android_id,
        user_fcm_token=user_fcm_token,
        user_social_flag=user_social_flag,
        user_fb_id=user_fb_id,
        user_android_app_version=user_android_app_version,
        name=name,
    )
    user.is_admin = True
    user.save(using=self._db)
    return user


class User(AbstractBaseUser):
   objects = UserManager()

   name = models.CharField(max_length=100, blank=True, null=True)
   email = models.EmailField(unique=True)
   created_at = models.DateField(blank=True, null=True)
   phone_no = models.BigIntegerField(blank=True, null=True)
   user_android_id = models.CharField(max_length=255, blank=True, null=True)
   user_fcm_token = models.CharField(max_length=255, blank=True, null=True)
   user_social_flag = models.IntegerField(blank=True, null=True)
   user_fb_id = models.CharField(max_length=255, blank=True, null=True)
   user_android_app_version = models.CharField(max_length=25, blank=True, null=True)

   USERNAME_FIELD = 'email'

   def __str__(self):  
      return self.email

自定义视图文件:

from rest_auth.registration.views import RegisterView
from app.models import User

class CustomRegisterView(RegisterView):
    queryset = User.objects.all()

在 settings.py 文件中我设置了:

AUTH_USER_MODEL = 'app.User'
ACCOUNT_USER_MODEL_USERNAME_FIELD = None
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_VERIFICATION = 'none'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_USER_EMAIL_FIELD = 'email'
ACCOUNT_LOGOUT_ON_GET = True


 REST_AUTH_SERIALIZERS = {
   "USER_DETAILS_SERIALIZER": 
  "app.serializers.CustomUserDetailsSerializer",
 }
REST_AUTH_REGISTER_SERIALIZERS = {
    "REGISTER_SERIALIZER": 
  "app.serializers.CustomRegisterSerializer",
 }

我已经在 url 文件中设置了 url。

re_path(r'^registration/$', views.CustomRegisterView.as_view())

当我运行 /registration/ url 并填写所有详细信息时,出现错误:

django.db.utils.IntegrityError:“is_superuser”列中的空值违反了非空约束详细信息:失败的行包含 (8, pbkdf2_sha256$120000$VpGItoUPHoJ9$yBQB2PqRDiqd4SQ2cDZX/wzaV3y,null, null, null, null..., null null、null、null、null、[email protected]、null、null、null、null、null、null、null)。

我在这里缺少什么?

更新1:

在查看数据库记录时,发现只有email、password、last_login这三个字段只被插入,其余都是空的。可能是什么原因?

更新 2:

CustomRegisterSerializer 类:-

   class CustomRegisterSerializer(RegisterSerializer):
    email = serializers.EmailField()
    password1 = serializers.CharField(write_only=True)
    name = serializers.CharField()
    phone_no = serializers.IntegerField()
    user_android_id = serializers.CharField()
    user_fcm_token = serializers.CharField(required=True)
    user_social_flag = serializers.IntegerField()
    user_fb_id = serializers.CharField(required=True)
    user_android_app_version = serializers.CharField()

    class Meta:
        model = User
        fields = ('email', 'name', 'phone_no', 'user_android_id', 'user_fcm_token',
                  'user_social_flag', 'user_fb_id', 'user_android_app_version')

    def get_cleaned_data(self):
        super(CustomRegisterSerializer, self).get_cleaned_data()

        return {
            'password1': self.validated_data.get('password1', ''),
            'email': self.validated_data.get('email', ''),
            'phone_no': self.validated_data.get('phone_no'),
            'name': self.validated_data.get('name'),
            'user_android_id': self.validated_data.get('user_android_id'),
            'user_fcm_token': self.validated_data.get('user_fcm_token'),
            'user_social_flag': self.validated_data.get('user_social_flag'),
            'user_fb_id': self.validated_data.get('user_fb_id'),
            'user_android_app_version': self.validated_data.get('user_android_app_version'),

        }
4140吨

create_user你评论is_staffis_superuser. 取消注释并将它们设置为False.

编辑:

关于田不进入数据库-is_staffis_superuser不是你的用户模型中定义的,并且也不在定义AbstractBaseUser这很奇怪,因为在这种情况下,您一开始就不应该得到该异常。

你是刚刚开始你的项目还是在交换用户模型之前运行了迁移?如果您已经开始使用 Django 的默认用户模型,您将需要做更多的工作。希望您还没有任何真正的用户,并且您可以快速完成。仔细查看Django 文档中的主题

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

“ owner_id”列中/ new空值处的Django IntegrityError违反了非空约束

来自分类Dev

Django-IntegrityError:“ user_id”列中的空值违反了非空约束

来自分类Dev

Django-列中的空值违反了Django Admin中的非空约束

来自分类Dev

Django-列中的空值违反了Django Admin中的非空约束

来自分类Dev

列“ user_id”中的空值违反了Django 1.9中的非空约束

来自分类Dev

列“ user_id”中的Django空值违反了非空约束

来自分类Dev

Django:“ user_id”列中的空值违反了非空约束

来自分类Dev

Django - “wins”列中的空值违反了非空约束

来自分类Dev

django.db.utils.IntegrityError:关系“ movie_movie”的列“ author_id”中的空值违反了非空约束,不知道为什么会这样

来自分类Dev

在DRF(django-rest-framework)中,列“ author_id”中的空值违反了非空约束。我该怎么办?

来自分类Dev

提交表单时,为什么 Django 会在“user_id”列中引发 IntegrityError :null 值违反非空约束?

来自分类Dev

自定义Django用户模型以考虑DB非空标记

来自分类Dev

“ last_login”列中的空值违反了非空约束

来自分类Dev

错误:“ id”列中的空值违反了非空约束

来自分类Dev

Rails:PG :: NotNullViolation:错误:“ id”列中的空值违反了非空约束

来自分类Dev

500错误:“ timeline_id”列中的空值违反了非空约束

来自分类Dev

使用upsert时,“ created_at”列中的空值违反了非空约束

来自分类Dev

Rails:PG :: NotNullViolation:错误:“ id”列中的空值违反了非空约束

来自分类Dev

WSO2AM 分析 2.1 - “os”列中的空值违反了非空约束

来自分类Dev

IntegrityError:关系“ message”的列“ category_id”中的空值违反了非空约束详细信息:失败行包含

来自分类Dev

Django(1.6)自定义用户模型

来自分类Dev

Django自定义用户模型

来自分类Dev

自定义 Django 用户模型

来自分类Dev

从自定义Django用户模型中删除密码

来自分类Dev

无法在Django中创建自定义用户模型

来自分类Dev

在Django中创建自定义用户模型的指南

来自分类Dev

1.8中的Django自定义用户模型

来自分类Dev

无法在Django中验证自定义用户模型

来自分类Dev

空值违反了非空约束,但是模型具有空白= True null = True

Related 相关文章

  1. 1

    “ owner_id”列中/ new空值处的Django IntegrityError违反了非空约束

  2. 2

    Django-IntegrityError:“ user_id”列中的空值违反了非空约束

  3. 3

    Django-列中的空值违反了Django Admin中的非空约束

  4. 4

    Django-列中的空值违反了Django Admin中的非空约束

  5. 5

    列“ user_id”中的空值违反了Django 1.9中的非空约束

  6. 6

    列“ user_id”中的Django空值违反了非空约束

  7. 7

    Django:“ user_id”列中的空值违反了非空约束

  8. 8

    Django - “wins”列中的空值违反了非空约束

  9. 9

    django.db.utils.IntegrityError:关系“ movie_movie”的列“ author_id”中的空值违反了非空约束,不知道为什么会这样

  10. 10

    在DRF(django-rest-framework)中,列“ author_id”中的空值违反了非空约束。我该怎么办?

  11. 11

    提交表单时,为什么 Django 会在“user_id”列中引发 IntegrityError :null 值违反非空约束?

  12. 12

    自定义Django用户模型以考虑DB非空标记

  13. 13

    “ last_login”列中的空值违反了非空约束

  14. 14

    错误:“ id”列中的空值违反了非空约束

  15. 15

    Rails:PG :: NotNullViolation:错误:“ id”列中的空值违反了非空约束

  16. 16

    500错误:“ timeline_id”列中的空值违反了非空约束

  17. 17

    使用upsert时,“ created_at”列中的空值违反了非空约束

  18. 18

    Rails:PG :: NotNullViolation:错误:“ id”列中的空值违反了非空约束

  19. 19

    WSO2AM 分析 2.1 - “os”列中的空值违反了非空约束

  20. 20

    IntegrityError:关系“ message”的列“ category_id”中的空值违反了非空约束详细信息:失败行包含

  21. 21

    Django(1.6)自定义用户模型

  22. 22

    Django自定义用户模型

  23. 23

    自定义 Django 用户模型

  24. 24

    从自定义Django用户模型中删除密码

  25. 25

    无法在Django中创建自定义用户模型

  26. 26

    在Django中创建自定义用户模型的指南

  27. 27

    1.8中的Django自定义用户模型

  28. 28

    无法在Django中验证自定义用户模型

  29. 29

    空值违反了非空约束,但是模型具有空白= True null = True

热门标签

归档