Django 사용자 모델 상속이 작동하지 않습니다.

lazyCoder

내 Django 앱에는 Retailer와 Customer의 두 가지 모델이 있습니다. 둘 다 모델 필드는 다르지만 인증을위한 공통 필드는 이메일과 비밀번호입니다. 그래서 저는 User Model Inheritance를 사용했습니다. 이것은 내 코드입니다.

상속 이유 : 토큰 인증을 구현하고 싶습니다

models.py

class User(AbstractUser):
    
    email = models.EmailField(_('email address'), unique=True)

    USERNAME_FIELD = 'email'
    EMAIL_FIELD = 'email'
    REQUIRED_FIELDS = []

    objects = UserManager()

    def __str__(self):
        return self.email

class Retailer(User, PermissionsMixin):

    name = models.CharField(max_length=255)
    phoneNUMBER = models.CharField(max_length=10)
    verificationSTATUS = models.BooleanField(default=False)
    dateJOINED = models.DateField(default=timezone.now)

    USERNAME_FIELD = 'email'
    EMAIL_FIELD = 'email'    
 
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['name', 'phoneNUMBER',]
 
    objects = RetailerManager()
 
    def __str__(self):
        return self.name
 
class Customer(User, PermissionsMixin):

    name=models.CharField( max_length=255, null=False,)
    phone_Number=models.CharField( max_length=10, null=False)
    address=models.TextField(max_length=255,null=False)
    pin_Code=models.CharField( max_length=6,null=False )
    anniversary_Date=models.DateField(blank=True,null=True)
    hobbies=models.TextField(blank=True,null=True)
    profession=models.CharField(blank=True,max_length=20,null=True,)
    created_At=models.DateField(default=timezone.now)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['name', 'phoneNUMBER', 'address', 'pin_Code']    

    objects = CustomerManager()

    def __str__(self):
        return (self.name)   

managers.py

class UserManager(BaseUserManager):
    """
    Custom user model manager where email is the unique identifiers
    for authentication instead of usernames.
    """
    def create_user(self, email, password, **extra_fields):
        """
        Create and save a User with the given email and password.
        """
        if not email:
            raise ValueError(_('The Email must be set'))
        email = self.normalize_email(email)
        user = self.model(email=email, **extra_fields)
        user.set_password(password)
        user.save()
        return user

    def create_superuser(self, email, password, **extra_fields):
        """
        Create and save a SuperUser with the given email and password.
        """
        extra_fields.setdefault('is_staff', True)
        extra_fields.setdefault('is_superuser', True)
        extra_fields.setdefault('is_active', True)

        if extra_fields.get('is_staff') is not True:
            raise ValueError(_('Superuser must have is_staff=True.'))
        if extra_fields.get('is_superuser') is not True:
            raise ValueError(_('Superuser must have is_superuser=True.'))
        return self.create_user(email, password, **extra_fields)
 

class RetailerManager(BaseUserManager):
 
    def create_retailer(self, name, email, phoneNUMBER, password=None):
        if email is None:
            raise TypeError('User must have an email address.')
        retailer = Retailer(
            email=self.normalize_email(email),
            name=name,
            phoneNUMBER=phoneNUMBER
            )
        retailer.set_password(password)
        retailer.save()
        return retailer

class CustomerManager(BaseUserManager):
 
    def create_customer(self, name, email, phone_Number, address, pin_Code, password=None, **extra_fields):
        if email is None:
            raise TypeError('User must have an email address.')
        customer = Customer(
            email=self.normalize_email(email),
            name=name,
            phone_Number=phone_Number,
            address=address,
            pin_Code=pin_Code,
            )
        customer.set_password(password)
        customer.save()
        return customer

내가 이것을 실행할 때

 Retailer.objects.create(email="[email protected]", name="John Doe", password="john@123", phoneNUMBER = "90909090")

이 오류가 발생합니다.

django.db.utils.IntegrityError: UNIQUE constraint failed: retailer_user.username

또한 이것을 실행하면

Customer.objects.create(email="[email protected]", name="Jane Doe", password="jane@123")

같은 오류가 발생합니다

django.db.utils.IntegrityError: UNIQUE constraint failed: retailer_user.username

아무도 내가 뭘 잘못하고 있는지 말할 수 있습니까? 이것이 최선의 접근 방식입니까? 또한 소매 업체와 고객 모두에 대해 토큰 인증을 구현하려면 어떻게해야합니까?

Charlesthk

대신 인증을 사용 하지 않으 려면 User에서 상속해야합니다 .AbstractBaseUserAbstractUseremailusername

username하여 오류를 제기 필드에서 온다 AbstractUser클래스입니다.

class User(AbstractBaseUser):
    
    email = models.EmailField(_('email address'), unique=True)
    first_name = models.CharField(_('first name'), max_length=150, blank=True)
    last_name = models.CharField(_('last name'), max_length=150, blank=True)
    email = models.EmailField(_('email address'), blank=True)
    is_staff = models.BooleanField(
        'staff status',
        default=False,
        help_text='Designates whether the user can log into this admin site.',
    )
    is_active = models.BooleanField(
        'active',
        default=True,
        help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.',
    )
    date_joined = models.DateTimeField('date joined', default=timezone.now)
    USERNAME_FIELD = 'email'
    EMAIL_FIELD = 'email'
    REQUIRED_FIELDS = ['email']

    objects = UserManager()

    def get_full_name(self):
        """
        Return the first_name plus the last_name, with a space in between.
        """
        full_name = '%s %s' % (self.first_name, self.last_name)
        return full_name.strip()

    def get_short_name(self):
        """Return the short name for the user."""
        return self.first_name

    def __str__(self):
        return self.email

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Django 사용자 정의 사용자 모델 인증이 작동하지 않습니다.

분류에서Dev

django 모델 양식을 사용하여 모델 양식이 자동으로 생성되지 않았습니다.

분류에서Dev

Django : 사용자 사용자 모델이로드되지 않았습니다.

분류에서Dev

Laravel은 사용자 정의 모델 속성이 작동하지 않습니다.

분류에서Dev

Django ignore_conflicts가 사용자 모델에서 작동하지 않습니다.

분류에서Dev

재정의 된 후 Django 사용자 모델이 작동하지 않음

분류에서Dev

맞춤 사용자 모델이 작동하지 않는 django 인증

분류에서Dev

맞춤 사용자 모델이 작동하지 않는 django-allauth

분류에서Dev

Yii 모델 사용자 지정 규칙이 작동하지 않습니다.

분류에서Dev

Django ORM이 모델에서 작동하지 않습니다.

분류에서Dev

Django의 사용자 지정 사용자 모달에서 로그인이 작동하지 않습니다.

분류에서Dev

사용자 정의 사용자 모델에 대한 인증이 작동하지 않습니다.

분류에서Dev

Django 업데이트 모델 BooleanField가 작동하지 않습니다.

분류에서Dev

v 모델이있는 사용자 지정 스위치 구성 요소가 작동하지 않습니다.

분류에서Dev

Ember 데이터 모델 롤백이 모델의 사용자 정의 속성에서 작동하지 않습니다.

분류에서Dev

사용자 프로필에 대한 Django 모델 양식이 미리 채워지지 않습니다.

분류에서Dev

Django-REST : 사용자 지정 권한이 작동하지 않습니다.

분류에서Dev

Django가 사용자 지정 사용자를 다른 모델의 외래 키로 저장하지 않음 : NOT NULL 제약 조건이 실패했습니다.

분류에서Dev

Django에서 사용자 등록이 완전히 작동하지 않습니다.

분류에서Dev

Django 사용자 가입 / 등록 양식이 작동하지 않습니다.

분류에서Dev

사용자 지정 DateTime 모델 바인더가 작동하지 않습니다.

분류에서Dev

pytest-factoryboy에서 다중 테이블 상속을 사용하여 Django 모델의 속성 매개 변수화

분류에서Dev

Django 자동 완성이 작동하지 않습니다.

분류에서Dev

DefaultValue.Mock을 사용한 자동 중첩 모킹이 예상대로 작동하지 않습니다.

분류에서Dev

컬렉션을 상속하는 모델에 대해 자동 속성 유효성 검사가 작동하지 않는 이유는 무엇입니까?

분류에서Dev

Django의 사용자 지정 페이지 매김이 제대로 작동하지 않습니다.

분류에서Dev

Django 쇼 문자열이 작동하지 않습니다.

분류에서Dev

Nano Scroller가 부트 스트랩 드롭 다운 및 모델 상자에서 작동하지 않습니다.

분류에서Dev

Django에서 사용자 지정 사용자 모델을 사용하면 항상 템플릿에 익명 사용자가 반환됩니다.

Related 관련 기사

  1. 1

    Django 사용자 정의 사용자 모델 인증이 작동하지 않습니다.

  2. 2

    django 모델 양식을 사용하여 모델 양식이 자동으로 생성되지 않았습니다.

  3. 3

    Django : 사용자 사용자 모델이로드되지 않았습니다.

  4. 4

    Laravel은 사용자 정의 모델 속성이 작동하지 않습니다.

  5. 5

    Django ignore_conflicts가 사용자 모델에서 작동하지 않습니다.

  6. 6

    재정의 된 후 Django 사용자 모델이 작동하지 않음

  7. 7

    맞춤 사용자 모델이 작동하지 않는 django 인증

  8. 8

    맞춤 사용자 모델이 작동하지 않는 django-allauth

  9. 9

    Yii 모델 사용자 지정 규칙이 작동하지 않습니다.

  10. 10

    Django ORM이 모델에서 작동하지 않습니다.

  11. 11

    Django의 사용자 지정 사용자 모달에서 로그인이 작동하지 않습니다.

  12. 12

    사용자 정의 사용자 모델에 대한 인증이 작동하지 않습니다.

  13. 13

    Django 업데이트 모델 BooleanField가 작동하지 않습니다.

  14. 14

    v 모델이있는 사용자 지정 스위치 구성 요소가 작동하지 않습니다.

  15. 15

    Ember 데이터 모델 롤백이 모델의 사용자 정의 속성에서 작동하지 않습니다.

  16. 16

    사용자 프로필에 대한 Django 모델 양식이 미리 채워지지 않습니다.

  17. 17

    Django-REST : 사용자 지정 권한이 작동하지 않습니다.

  18. 18

    Django가 사용자 지정 사용자를 다른 모델의 외래 키로 저장하지 않음 : NOT NULL 제약 조건이 실패했습니다.

  19. 19

    Django에서 사용자 등록이 완전히 작동하지 않습니다.

  20. 20

    Django 사용자 가입 / 등록 양식이 작동하지 않습니다.

  21. 21

    사용자 지정 DateTime 모델 바인더가 작동하지 않습니다.

  22. 22

    pytest-factoryboy에서 다중 테이블 상속을 사용하여 Django 모델의 속성 매개 변수화

  23. 23

    Django 자동 완성이 작동하지 않습니다.

  24. 24

    DefaultValue.Mock을 사용한 자동 중첩 모킹이 예상대로 작동하지 않습니다.

  25. 25

    컬렉션을 상속하는 모델에 대해 자동 속성 유효성 검사가 작동하지 않는 이유는 무엇입니까?

  26. 26

    Django의 사용자 지정 페이지 매김이 제대로 작동하지 않습니다.

  27. 27

    Django 쇼 문자열이 작동하지 않습니다.

  28. 28

    Nano Scroller가 부트 스트랩 드롭 다운 및 모델 상자에서 작동하지 않습니다.

  29. 29

    Django에서 사용자 지정 사용자 모델을 사용하면 항상 템플릿에 익명 사용자가 반환됩니다.

뜨겁다태그

보관