2015-10-30 9 views
9

У меня есть вопрос В проекте у меня есть необходимость работы с пользователями, которые имеют три (может быть более) типов из них имеют различные роли: врача пациента администраторРабота с ролями пользователей в Django

Я думал о использовании пользователей модели Django и расширил его, создав модель userprofile ... Но я игнорирую, как управлять разными ролями, потому что в модели userprofile будут поля пользовательской модели, хотя я не знаю как решить тему ролей.

1 У пользователя есть много userprofiles? Я не знаю

Может быть, мне нужно создать модель/таблицу ролей, где я укажу типы ролей и создаю связь с моделью пользователей. Это хорошая возможность.

Другая возможность (как комментарий ниже) - проверить систему разрешений Django, в которой я могу создавать группы пользователей и назначать разрешения для этих групп, хотя здесь я могу только редактировать, создавать и удалять модели на самом деле?

Я несколько смутить о того, как рассмотреть этот вопрос

Searching Я нашел это приложение. https://github.com/dabapps/django-user-roles

Если кто-нибудь может сориентировать меня об этом, я буду очень благодарен С наилучшими пожеланиями

+0

** django- user-role ** был выполнен 4 года назад и не обновляется. Похоже, он был создан для Django 1.3. Я бы не рекомендовал его использовать. –

+0

Это правда Андрес. В настоящее время я рассматриваю другие варианты, между которыми включена пользовательская настройка модели. Спасибо за разъяснение – bgarcial

+1

Мое удовольствие! Я бы тоже подумал об этом: https://docs.djangoproject.com/en/1.8/topics/auth/default/#permissions-and-authorization –

ответ

11

Вы могли бы получить эту работу с Джанго, построенных в permissions

Это может быть больше, чем нужно, хотя , Простое решение было бы просто UserProfile модель с полем ролей с OneToOneField вашего пользователя:

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

Набором ролей и делать проверку с ролями в ваших просмотрах:

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

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

Hi @sponrad, который я изучал, и, как правило, используется модель UserProfile для добавления дополнительной информации или дополнительных атрибутов в модель пользователя, без изменения модели пользователя ... Например, добавьте изображение аватара пользователю ... В соответствии с этим мышлением UserProfile отличается от UserRole, если мы говорим о моделях или структур данных. Согласны ли вы с этим? Я думаю, что я могу создать UserRole Model, и я могу сказать, что у одного пользователя есть много UserRoles ... например ... – bgarcial

+0

Другой альтернативой является изучение системы разрешений в Django (вы ссылались на меня выше), и я вижу возможность создавать группы и назначать привилегии или разрешения и назначать их пользователям. Каждая группа может быть ролью? Возможно. – bgarcial

+0

Имя «UserProfile» произвольно, таблица представляет любую информацию, которую вы хотите привязать к пользователю, будь то изображение профиля, день рождения, роль, что угодно. – sponrad