Django 1.5 / 1.6에서 두 가지 유형의 사용자 설정

jdotjdot

이 주제에 대한 내 원래 질문 의 업데이트 된 버전 이지만 Django가 사용자 및 인증을 처리하는 방식이 변경됨에 따라 다시 요청할 가치가 있습니다.

저는 매우 다른 두 종류의 사용자가있는 웹 사이트에서 작업 Customers하고 Store Owners있습니다. 둘 다 사이트에 등록되지만 기능이 매우 다릅니다. Customers프로필 하나만 있으면 좋아하는 매장에서 쇼핑 할 수 있습니다. Store Owners하나의 계정이 있지만 여러 상점에 액세스 할 수 있으며 각 상점은 여러 Store Owners.

모델의 정확한 세부 사항은 중요하지 않지만 두 유형의 사용자는 매우 다른 필드가 필요합니다. 모델은 이상적으로 다음과 같습니다.

Customer
  email (username)
  password
  name
  address
  time_zone
  preferred_shipping
  favorite_stores (many-to-many field)
  ...

Store Owner
  email (username)
  password
  name
  balance
  stores_owned (many-to-many field on Stores)
  stores_managed (many-to-many field on Stores)
  ...

장고 가난한 사용자 정의 사용자 지원을했을 때 원래, 나는했다 UserProfileA를 몇 가지 추가 필드가 클래스 OneToOne에를 User다음 추가 Customer하고 StoreOwner있었다 클래스 OneToOneUserProfile. 이것은 잘 작동하지 않았습니다.

Django 1.5 / 1.6의 변경 사항을 감안할 때 이것을 구성하는 가장 좋은 방법을 찾으려고 노력하고 있습니다. 지금은 다음이 있습니다.

class CustomerUser(AbstractBaseUser):
    ...

class StoreOwnerUser(AbstractBaseUser):
    ...

하지만 두 가지 유형의 사용자가 있기 때문에 AUTH_USER_MODEL그중 하나만 설정할 수는 없습니다 .

사용자 인증, 사용자 생성 또는 관리자에 문제를 일으키지 않고 필드가 다른 두 가지 유형의 사용자를 가질 수 있도록이를 구성하는 가장 좋은 방법은 무엇입니까?

또한, 내가 어떻게이 사용자가 혼자 여부를 로그인에서 말할 수있을 것이다 CustomerUser또는를 StoreOwnerUser?

tsurantino

사용자 유형에 공통적 인 기능과 비정상적인 기능이있는 것 같습니다. Django의 기본 사용자 모델이 기본적으로 지원하지 않는 일반적인 기능이 사용자 유형에있는 경우이를 직접 하위 클래스 화해야합니다.

사용자 유형에 일반적이지 않은 추가 기능을 추가하는 것은 서브 클래 싱이 아니라 프로필을 사용하는 것이 가장 좋습니다. 내 근거는 이러한 사용자 유형에 대한 인증이 근본적으로 변경되지 않고 사용자 유형에 따라 사용자에 대한 세부 정보가 변경되기 때문입니다. 이를 수용하기 위해 이러한 세부 정보로 별도의 모델을 만들고 User 클래스를 OneToOne / ForeignKey 관계로 참조합니다 (디자인에 따라 다름).

사용자 생성 프로세스를 수정하여 어떤 유형의 사용자 유형이어야하는지 식별하고 관련 OneToOneField / ForeignKey (디자인에 따라 다름)를 적절한 고객 유형 모델로 설정할 수 있습니다.

이렇게하면 AUTH_USER_MODEL이 하나만 있어야하며 다양한 고객 유형에 대한 세부 정보를 처리 할 수 ​​있어야합니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Django에서 http 오류 사용자 정의 페이지 설정

분류에서Dev

쉘 스크립팅에서 exec 1에 사용자 정의 메시지 추가

분류에서Dev

두 사용자가 서로에게 6 개의 메시지를 보낸 경우 5 개의 메시지 삭제

분류에서Dev

초급 질문 : 사용자 지정 유형의 두 목록의 각 조합에서 함수 사용 문제

분류에서Dev

두 가지 유형의 그룹화 사용, 하나는 matplotlib의 색상에 대해 라인 1을 플로팅하기위한 것입니다.

분류에서Dev

Acumatica 2019 R1에서 사용자 정의 필드 값 설정

분류에서Dev

사용자 정의 테이블 유형의 상위 1 개 행

분류에서Dev

Log4j 1 및 2-두 Log4J 버전의 사용자 지정 어 펜더가 동시에 동일한 파일에 쓰기

분류에서Dev

부트 스트랩에서 사용자 지정 너비를 사용하여 페이지의 1 행에 5 개 입력을 표시하는 방법

분류에서Dev

Python / Django에서 Oracle 사용자 지정 사용자 유형 전달

분류에서Dev

Struts 1 사용자 정의 현지화

분류에서Dev

사용자 지정 개체 유형의 두 ArrayList 병합

분류에서Dev

사용자 지정 개체 유형의 두 ArrayList 병합

분류에서Dev

Django의 컨텍스트 프로세서에서 사용자 지정 사용자 개체 설정

분류에서Dev

유형 쌍 목록의 벡터 크기를 클래스에서 사용자가 지정한 크기로 설정

분류에서Dev

사용자 지정 LINQ 확장 메서드에서 VerificationException 발생 : 형식 인수 IEnumerable`1 [entity] '가 형식 매개 변수'TCollection '의 제약 조건을 위반 함

분류에서Dev

송장 그리드에 사용자 정의 열 추가-Magento 1

분류에서Dev

사용자 정의 유형에 대한 파이썬 목록 생성자-길이가 두 번 호출 됨

분류에서Dev

asp.net : 사용자 정의 Login1_Authenticate에서 "사용자에게 역할 추가"방법

분류에서Dev

Lambda를 사용하여 Java에서 정렬 된 두 가지 유형 (문자열 및 정수) 목록 병합

분류에서Dev

1D에서 2D로 사용자 지정 레이어의 가중치 할당

분류에서Dev

사용자의 기본 글꼴 크기를 가정하지 않고 CSS / SASS에서 em 값 -1px 계산

분류에서Dev

두 가지 유형 정의 벡터에서 포인터를 사용하여 액세스하는 방법

분류에서Dev

tableView에 두 개의 사용자 지정 셀 추가

분류에서Dev

STM32F4-Disc1 : keil MDK 버전 5에서 사용자 정의 소프트웨어 지연이 작동하지 않음

분류에서Dev

STM32F4-Disc1 : keil MDK 버전 5에서 사용자 정의 소프트웨어 지연이 작동하지 않음

분류에서Dev

Wordpress에서 사용자 지정 게시물 유형으로 모두보기 추가

분류에서Dev

문자열 형식 악용 : 음수 값 설정 = "-1"% n 사용

분류에서Dev

두 가지 유형의 테이블을 조인 할 때 Tableau의 사용자 지정 집계

Related 관련 기사

  1. 1

    Django에서 http 오류 사용자 정의 페이지 설정

  2. 2

    쉘 스크립팅에서 exec 1에 사용자 정의 메시지 추가

  3. 3

    두 사용자가 서로에게 6 개의 메시지를 보낸 경우 5 개의 메시지 삭제

  4. 4

    초급 질문 : 사용자 지정 유형의 두 목록의 각 조합에서 함수 사용 문제

  5. 5

    두 가지 유형의 그룹화 사용, 하나는 matplotlib의 색상에 대해 라인 1을 플로팅하기위한 것입니다.

  6. 6

    Acumatica 2019 R1에서 사용자 정의 필드 값 설정

  7. 7

    사용자 정의 테이블 유형의 상위 1 개 행

  8. 8

    Log4j 1 및 2-두 Log4J 버전의 사용자 지정 어 펜더가 동시에 동일한 파일에 쓰기

  9. 9

    부트 스트랩에서 사용자 지정 너비를 사용하여 페이지의 1 행에 5 개 입력을 표시하는 방법

  10. 10

    Python / Django에서 Oracle 사용자 지정 사용자 유형 전달

  11. 11

    Struts 1 사용자 정의 현지화

  12. 12

    사용자 지정 개체 유형의 두 ArrayList 병합

  13. 13

    사용자 지정 개체 유형의 두 ArrayList 병합

  14. 14

    Django의 컨텍스트 프로세서에서 사용자 지정 사용자 개체 설정

  15. 15

    유형 쌍 목록의 벡터 크기를 클래스에서 사용자가 지정한 크기로 설정

  16. 16

    사용자 지정 LINQ 확장 메서드에서 VerificationException 발생 : 형식 인수 IEnumerable`1 [entity] '가 형식 매개 변수'TCollection '의 제약 조건을 위반 함

  17. 17

    송장 그리드에 사용자 정의 열 추가-Magento 1

  18. 18

    사용자 정의 유형에 대한 파이썬 목록 생성자-길이가 두 번 호출 됨

  19. 19

    asp.net : 사용자 정의 Login1_Authenticate에서 "사용자에게 역할 추가"방법

  20. 20

    Lambda를 사용하여 Java에서 정렬 된 두 가지 유형 (문자열 및 정수) 목록 병합

  21. 21

    1D에서 2D로 사용자 지정 레이어의 가중치 할당

  22. 22

    사용자의 기본 글꼴 크기를 가정하지 않고 CSS / SASS에서 em 값 -1px 계산

  23. 23

    두 가지 유형 정의 벡터에서 포인터를 사용하여 액세스하는 방법

  24. 24

    tableView에 두 개의 사용자 지정 셀 추가

  25. 25

    STM32F4-Disc1 : keil MDK 버전 5에서 사용자 정의 소프트웨어 지연이 작동하지 않음

  26. 26

    STM32F4-Disc1 : keil MDK 버전 5에서 사용자 정의 소프트웨어 지연이 작동하지 않음

  27. 27

    Wordpress에서 사용자 지정 게시물 유형으로 모두보기 추가

  28. 28

    문자열 형식 악용 : 음수 값 설정 = "-1"% n 사용

  29. 29

    두 가지 유형의 테이블을 조인 할 때 Tableau의 사용자 지정 집계

뜨겁다태그

보관