2013-12-02 2 views
5

Я немного не уверен, что использовать группы пользователей Django.Группы пользователей Django только для разрешений?

У меня есть приложение, в котором каждый пользователь принадлежит к другой организации. Организации не имеют ничего общего с разрешениями на чтение/запись. Это всего лишь способ разделить группы пользователей. Каждой организации нужны дополнительные поля, такие как имя, URL и адрес электронной почты. С течением времени к системе будут добавлены новые организации. В каждой организации пользователи могут иметь разные разрешения для модерации и администрирования, для которых я (также) хочу использовать группы пользователей.

Мой вопрос: Должен ли я использовать группы пользователей Django для определения организаций, или просто создать модель «Организация» с отношением к пользователю?

+1

Имейте в виду, что разрешения в django применяются ко всем моделям, а не к экземплярам в этих моделях. Например, ваша группа «OrgA» может иметь доступ для изменения ВСЕХ организаций или организаций NO. Возможно, вам захочется заглянуть в django-guardian или что-то подобное для прав на уровне объектов. –

+0

@JoshSmeaton Вы уверены? Возможно, это изменилось, потому что в официальном документе Django 1.8 я могу это прочитать: ** Разрешения могут быть установлены не только для каждого типа объекта, но и для конкретного экземпляра объекта ** –

+0

@DavidD. API существует, например, разрешения уровня, но встроенные разрешения django не используют их (из памяти). Вот почему я предложил другие пакеты django, которые фактически используют API-интерфейсы разрешения на уровне экземпляра. –

ответ

1

Nope. Группы пользователей создаются по разным причинам. Вы можете использовать их для определения организаций, но я думаю, что вы должны подумать о том, что дальше:

  • Будет ли организация требовать больше полей, чем просто имя?
  • Возможно, вам понадобятся разрешения в будущем для определения ролей пользователей в организациях?

Я уверен, что вы можете придумать больше вещей, чтобы думать. Но если вы ответили «да» на один из этих вопросов, просто создайте свою модель организации.

+0

Ответ на ваш вопрос определенно да, поэтому я думаю, что я согласен с вашим советом и сделаю свою собственную модель Организации. Благодаря! – jvannistelrooy

-1

1) Вам необходимо добавить group от django admin сторона под group стол.

2) И при создании нового пользователя присвойте groupuser, используя user_obj.groups.add(group_id). Или позвольте пользователю выбрать group во внешнем интерфейсе.

, а затем user_obj.save()

в Group таблице, вы можете создать organization

ИЛИ

Вы можете создавать отдельные organization таблицы и присвоить присвойте пользователю конкретной организации.

+0

Поэтому я предлагаю использовать таблицу групп как организацию. вместо создания нового. потому что уже существует связь между пользовательской и групповой таблицей. – Nilesh

+0

Тогда это, вероятно, неправильное решение. OP не требуется ни одна организация. Им нужно много разных групп, каждый из которых имеет дополнительные поля. –

+0

Он может переопределить групповой стол в своем проекте django и добавить в него новые поля. – Nilesh

Смежные вопросы