제 신청서에는 학생, 교수 및 직원이 있습니다. 직원은 프로필이 필요 없지만 교수와 학생은 각각 다른 프로필이 필요합니다. 차라리 모든 것을 스스로 구현하지는 않을 것입니다. (미들웨어와 기타 등등) 어쨌든 get_profile()은 사용자의 역할에 따라 다른 프로파일을 반환해야합니까?django에서 여러 종류의 사용자에 대해 서로 다른 프로필을 갖는 가장 좋은 방법은 무엇입니까?
답변
현재 베타 버전 인 Django 1.1을 사용하면 proxy model을 구현할 것입니다.
class MyUser(User):
class Meta:
proxy = True
def get_profile(self):
if self.role == 'professor':
return ProfessorProfile._default_manager.get(user_id__exakt=self.id)
elif self.role == 'student':
return StudentProfile._default_manager.get(user_id__exakt=self.id)
else:
# staff
return None
get_profile에는 원본의 캐싱 코드가 필요합니다. 그러나 근본적으로 당신은 그런 것을 할 수 있습니다.
Django 1.0.x에서는 User를 기반으로 파생 클래스를 구현할 수 있지만 다른 곳에서는 코드가 손상 될 수 있습니다. 그런 것들을 위해서 프록시 클래스를 좋아합니다. 프록시 클래스는 데이터베이스 모델을 변경하지 않고 파이썬 기능을 추가합니다.
rad http://docs.djangoproject.com/en/dev/topics/auth/#auth-profiles?
그게 표준 해결책입니다.
나는 그것을 읽었다. 필자가 필요로하는 것은 다양한 종류의 사용자에 대해 서로 다른 종류의 프로필을 제공하는 것으로,이 솔루션은 모든 사용자에게 한 종류의 프로필 만 제공합니다. –
"다른 종류의 프로필"의 예제로 질문을 업데이트하십시오. 일반적으로 여러 필드가있는 프로필을 정의하며 그 중 일부는 선택 사항입니다. 너 무슨 소리 야? –
- 1. Django에서 다국어 "로그 메시지"를 갖는 가장 좋은 방법은 무엇입니까?
- 2. 다른 사용자에 대해 동일한 로그인 페이지 만들기
- 3. 여러 시스템을 통합하는 가장 좋은 방법은 무엇입니까?
- 4. 어떤 종류의 정수 입력 C++에 대해 비트 단위 함수를 작동시키는 가장 좋은 방법은 무엇입니까?
- 5. django에서 '기록'유형 모델을 만드는 가장 좋은 방법은 무엇입니까?
- 6. 익명 프로필을 마이그레이션하는 가장 좋은 방법
- 7. Django에서 A-Z리스트를 만드는 가장 좋은 방법은?
- 8. SQL에서 "반복 필드"를 갖는 가장 좋은 방법은 무엇입니까?
- 9. 여러 언어로 된 여러 도메인 중에서 가장 좋은 방법은 무엇입니까?
- 10. 조직의 모든 사용자에 대해 동일한 프로필을 구성하는 방법
- 11. Django에서 데이터베이스 설정을 저장하는 가장 좋은 방법은 무엇입니까?
- 12. django에서 DB 쿼리를 체인화하고 필터링하는 가장 좋은 방법은 무엇입니까?
- 13. Ruby : 같은 문자열이 서로 다른 해시 코드를 갖는 이유는 무엇입니까?
- 14. Javascript에서 긴 문자열 리터럴을 갖는 가장 좋은 방법은 무엇입니까?
- 15. 여러 작업을 처리하는 가장 좋은 방법은 무엇입니까?
- 16. 여러 배열을 반복하는 가장 좋은 방법은 무엇입니까?
- 17. 모범 사례 서로 다른 종류의 개체에서 채우는 Treeview
- 18. Django에서 요청 범위 데이터에 가장 좋은 방법은 무엇입니까?
- 19. Django에서 탐색 모음 검색 상자를 수행하는 가장 좋은 방법은 무엇입니까?
- 20. Django에서 임시 이미지로 작업하는 가장 좋은 방법은 무엇입니까?
- 21. Django에서 모델을 부적절한/스팸으로 신고하는 가장 좋은 방법은 무엇입니까?
- 22. Windows에서 개발중인 경우 Django에서 CoffeeScript를 사용하는 가장 좋은 방법은 무엇입니까?
- 23. 한 가지 질문에 대해 수행하십시오. 가장 좋은 방법은 무엇입니까?
- 24. Magento에서 단순 기능을 갖춘 여러 제품 그룹을 갖는 가장 좋은 방법은 무엇입니까?
- 25. 라디오 버튼을 서로 겹치게하는 가장 좋은 방법은 무엇입니까?
- 26. 여러 파일에서 여러 쿼리를 찾아 바꾸는 가장 좋은 방법은 무엇입니까?
- 27. 하나의 프로필과 다른 프로필을 전환하는 방법은 무엇입니까?
- 28. Obj-C의 다른 클래스에서 코드를 재사용하는 가장 좋은 방법은 무엇입니까?
- 29. 한 명의 사용자에 대해 여러 세션이 있습니까?
- 30. 두 가지 모델에 대해 서로 다른 authentication_keys를 사용하는 방법은 무엇입니까?
이것들은 유용하게 보이지만, 여전히 여러 사용자/프로필 유형을 사용하고있는 것과 똑같은 문제가 있습니다. 기존 앱은 그것에 대해 모릅니다. 그들은 단지 사용자 인스턴스를 생성하기 때문에이 멋진 메서드는 완전히 무시됩니다. – ironfroggy
예, 여러 사용자 모델은 여전히 다소 문제가 있지만 역할에 따라 서로 다른 프로필을 해결할 수 있습니다. –