Trong đơn của tôi, tôi có sinh viên, giáo sư và nhân viên. Nhân viên không cần một hồ sơ nhưng các giáo sư và sinh viên đều cần một hồ sơ khác. Tôi không muốn thực hiện nó tất cả bản thân mình (middleware và whatnot), do đó, có anyway để chỉ có get_profile() trả về một hồ sơ khác nhau tùy thuộc vào vai trò của người dùng?Cách tốt nhất để có hồ sơ khác nhau cho các loại người dùng khác nhau trong django là gì?
Trả lời
Với Django 1.1, hiện đang ở giai đoạn thử nghiệm, tôi sẽ triển khai 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 cần mã bộ nhớ đệm từ tệp gốc và vân vân. Nhưng về cơ bản bạn có thể làm một cái gì đó như thế.
Với Django 1.0.x bạn có thể triển khai các lớp dẫn xuất dựa trên User, nhưng điều này có thể phá vỡ mã ở những nơi khác. Đối với những thứ như thế tôi yêu các lớp proxy, chỉ cần thêm chức năng python mà không thay đổi các mô hình cơ sở dữ liệu.
Bạn có rad http://docs.djangoproject.com/en/dev/topics/auth/#auth-profiles không?
Đó là giải pháp tiêu chuẩn.
Tôi đã đọc điều đó. Những gì tôi cần là các loại hồ sơ khác nhau cho các loại người dùng khác nhau, giải pháp đó sẽ chỉ cung cấp một loại tiểu sử cho tất cả người dùng. –
Vui lòng cập nhật câu hỏi của bạn với ví dụ về "các loại tiểu sử khác nhau". Thông thường, chúng tôi xác định các tiểu sử có nhiều trường, một số trường là tùy chọn. Bạn đang nói về cái gì vậy? –
- 1. Django - Hồ sơ người dùng thuộc các loại khác nhau
- 2. hồ sơ người dùng khác nhau với django-profiles & django đăng ký
- 3. Cấp phép cho người dùng trên sơ đồ khác nhau
- 4. Giao diện 'quản trị' riêng biệt cho các loại người dùng khác nhau trong django
- 5. Hiển thị cùng một trang khác nhau cho người dùng có vai trò khác nhau
- 6. Các loại mục tiêu khác nhau trong EDE là gì?
- 7. Delphi - hồ sơ với các bộ phận khác nhau
- 8. Cách tốt nhất để tạo drawables cho dpi khác nhau
- 9. Django - Tạo hồ sơ người dùng khi tạo người dùng
- 10. Với QT, có cách nào để xác định bố cục giao diện người dùng khác nhau cho các kiểu giao diện người dùng khác nhau không?
- 11. ứng dụng cài đặt hồ sơ/người dùng django tốt nhất ở đâu?
- 12. Các loại trường hợp khác nhau là gì?
- 13. Cách thiết lập mô hình Django với hai loại người dùng với các thuộc tính rất khác nhau
- 14. Múi giờ cho những người dùng khác nhau
- 15. SQL: Loại bỏ hồ sơ trùng lặp - mặc dù loại khác nhau
- 16. Hồ sơ là gì?
- 17. Django với Gunicorn các cách khác nhau để triển khai
- 18. Điều gì là tốt nhất cho một hồ sơ, một số hoặc một tên?
- 19. Mảng các loại khác nhau
- 20. Sự khác nhau giữa các phương thức * get helper * khác nhau trong Magento là gì?
- 21. Sự khác nhau giữa các bản triển khai Bản đồ khác nhau trong Dart là gì?
- 22. Cách tốt nhất để xử lý GoBack cho các nền tảng MvvmCross (v3) khác nhau là gì
- 23. Sự khác nhau giữa các tùy chọn đồng bộ luồng khác nhau trong C# là gì?
- 24. Chạy với tư cách người dùng khác nhau theo FreeBSD
- 25. Cách xử lý các thực thể thuộc tính khác nhau cho các thực thể khác nhau
- 26. Sự khác nhau giữa giải pháp đa người thuê và đa người dùng là gì?
- 27. Đăng ký Django và nhiều hồ sơ
- 28. Django, cập nhật hồ sơ người dùng với ModelForm
- 29. Cách kinh điển xử lý các loại khác nhau trong Python là gì?
- 30. Cách tốt nhất để lấy mẫu/hồ sơ ứng dụng PyObjC là gì?
Những giao diện này hữu ích nhưng điều này vẫn đặt ra cùng một vấn đề chính xác mà tôi có với việc sử dụng nhiều loại người dùng/hồ sơ của riêng tôi: các ứng dụng hiện tại không biết về nó. Họ chỉ tạo ra các cá thể người dùng, vì vậy phương pháp tốt đẹp này hoàn toàn bị bỏ qua. – ironfroggy
Có, nhiều mô hình người dùng vẫn còn có vấn đề, nhưng các cấu hình khác nhau dựa trên vai trò có thể được giải quyết. –