Tôi có ứng dụng Django cho phép nhiều loại người dùng khác nhau: công ty, quản trị viên, người bên ngoài v.v. Tất nhiên điều này dễ quản lý với hệ thống xác thực và nhóm mặc định.Django - Hồ sơ người dùng thuộc các loại khác nhau
Vấn đề của tôi là người dùng thuộc các nhóm khác nhau sẽ có thông tin liên quan khác nhau - ví dụ các công ty sẽ cần cung cấp một số thông tin thương mại không có ý nghĩa cho người dùng cá nhân. Do đó tôi cần phải đính kèm các loại hồ sơ khác nhau, tùy thuộc vào nhóm. (Trong các nhóm ứng dụng của tôi là loại trừ lẫn nhau.)
Thật không may, Django chỉ cho phép một mô hình duy nhất được đính kèm dưới dạng hồ sơ và mô hình đó được khai báo trong settings.AUTH_PROFILE_MODULE
. Nội bộ, được truy xuất theo phương thức User.get_profile()
, về cơ bản chỉ đọc giá trị này và thực hiện một số kiểm tra, ví dụ như mô hình thực sự tồn tại.
Tôi đã nghĩ đến việc phân lớp User
và ghi đè phương thức get_profile()
, sao cho nó trả về một mô hình khác tùy thuộc vào nhóm.
Is there a simpler/cleaner way to manage different kind of profiles?
Những gì tôi đang đề xuất có vẻ hơi hack, xem hồ sơ người dùng đã được giới thiệu chính xác để tránh phải phân lớp người dùng.
Điều này hóa ra là cách đơn giản nhất. Vấn đề của tôi bây giờ là đảm bảo rằng các hồ sơ này thực sự được điền từ quản trị viên. http://stackoverflow.com/questions/6681464/django-admin-validating-inlines-together-with-main-models – Andrea
Mô hình người dùng này không phải là một điều mặc định đi kèm với Django phải không? Bởi vì tôi nhận được 'NameError: name 'User' không được định nghĩa' khi tôi thử này –
@JulioMarins Vâng, bạn nên nhập nó:' từ django.contrib.auth.models import User' – DrTyrsa