2015-10-30 26 views
9

Tôi có một số câu hỏi Trong một dự án tôi có nhu cầu công việc với người sử dụng mà là ba (có thể nhiều hơn) các loại trong số họ có vai trò khác nhau: bác sĩ bệnh nhân quản trịLàm việc với vai trò người dùng trong Django

Tôi đã nghĩ đến việc sử dụng Người dùng Mô hình Django và mở rộng nó tạo ra một mô hình userprofile ... Nhưng tôi bỏ qua cách quản lý các vai trò khác nhau bởi vì, mô hình userprofile sẽ có các trường của mô hình người dùng, mặc dù tôi không biết cách giải quyết chủ đề vai trò.

1 Người dùng có nhiều hồ sơ người dùng có thể là? Tôi không biết

Hoặc có thể tôi sẽ tạo Mô hình/bảng vai trò trong đó tôi chỉ định các loại vai trò và tạo mối quan hệ với Mô hình người dùng. Đây là một khả năng tốt.

Một khả năng khác (như nhận xét bên dưới) là kiểm tra hệ thống quyền Django, trong đó tôi có thể tạo nhóm người dùng và gán quyền cho các nhóm này, mặc dù ở đây tôi chỉ có thể chỉnh sửa, tạo và xóa mô hình thực sự?

Tôi hơi nhầm lẫn về cách giải quyết chủ đề này

Tìm kiếm Tôi tìm thấy ứng dụng này. https://github.com/dabapps/django-user-roles

Nếu ai đó có thể định hướng cho tôi về điều đó, tôi sẽ biết ơn Trân trọng

+0

** django- vai trò người dùng ** đã được thực hiện cách đây 4 năm và không được cập nhật. Dường như nó đã được thực hiện cho Django 1.3. Tôi sẽ không khuyên bạn nên sử dụng nó. –

+0

Đúng là Andrés. Tôi hiện đang xem xét các tùy chọn khác, trong đó bao gồm tùy chỉnh người dùng mô hình. Cảm ơn bạn đã làm rõ – bgarcial

+1

Niềm vui của tôi! Tôi cũng sẽ xem xét điều này: https://docs.djangoproject.com/en/1.8/topics/auth/default/#permissions-and-authorization –

Trả lời

11

Bạn có thể có thể có được điều này để làm việc với nhân django xây dựng trong permissions

Đó có thể là nhiều hơn bạn cần dù . Một giải pháp đơn giản sẽ chỉ là một mô hình UserProfile với một lĩnh vực đóng vai trò với một OneToOneField để người dùng của bạn:

class UserProfile(models.Model): 
    user = models.OneToOneField(User, related_name="profile") 
    role = models.CharField() 

Đặt vai trò và làm kiểm tra với vai trò trong quan điểm của bạn:

user.profile.role = "physician" 
user.profile.save() 

if user.profile.role == "physician": 
    #do physician case here 
+0

Hi @sponrad Tôi đã khám phá và, một Mô hình UserProfile được sử dụng nói chung để thêm thông tin bổ sung hoặc các thuộc tính bổ sung vào Mô hình người dùng, mà tôi không sửa đổi mô hình Người dùng ... Ví dụ: thêm hình đại diện cho người dùng ... Theo suy nghĩ này, UserProfile khác với UserRole nếu chúng ta nói về các mô hình hoặc cấu trúc dữ liệu. Bạn có đồng ý với nó không? Tôi nghĩ rằng tôi có thể tạo một mô hình UserRole và tôi có thể nói rằng một người dùng có nhiều UserRoles ... ví dụ ... – bgarcial

+0

Cách khác là nghiên cứu hệ thống quyền trong Django (bạn gọi tôi ở trên) và tôi có thể thấy khả năng tạo nhóm và gán đặc quyền hoặc quyền và gán chúng cho người dùng. Mỗi nhóm có thể là một vai trò? Có thể. – bgarcial

+0

Tên "UserProfile" là tùy ý, bảng đại diện cho bất kỳ thông tin nào bạn muốn gắn với người dùng cho dù đó là hình ảnh hồ sơ, sinh nhật, vai trò, bất cứ điều gì. – sponrad

Các vấn đề liên quan