Соотношение «многие ко многим» между Django User, Permissions и другим объектом - PullRequest
0 голосов
/ 17 февраля 2020

Рассмотрим Django веб-приложение для CompanyXYZ, которое предоставляет товары и услуги многим организациям. Пользователи приложения будут связаны с одной или несколькими из этих организаций и будут иметь разные роли (и им будет разрешен доступ к разным данным) в каждой. Итак, представьте схему, подобную этой:

Users>---UserOrg----<Org
             V
             |
          UserOrgPermissions
             |
             ^
           Permissions

Разрешения относятся к услугам, предоставляемым компанией, и в целом выглядят так: «Можно заказать X», «Можно просмотреть X заказов», «Можно заказать Y» , «Можно просмотреть Y заказов», «Можно заказать Z» ... et c. Пользователи должны иметь возможность войти на сайт CompanyXYZ один раз, а затем выбирать из своих дочерних организаций просмотр сводных данных и / или размещать заказы, в зависимости от его / ее разрешений в данной организации.

С точки зрения администратора, мне нужно иметь возможность создавать организации, создавать пользователей, назначать пользователей организациям и назначать разрешения пользователям для каждой из его / ее организаций.

Я довольно новичок в Django, поэтому я не уверен, что это вообще выполнимо. Как начать?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Django предоставляет вам почти все для ваших нужд. Попробуйте сначала узнать о пользователях. Избегайте создания пользователей с нуля, вы можете просто использовать или настраивать Django Модели пользователей. тогда разрешения и организации могут быть решены с помощью групп .

0 голосов
/ 17 февраля 2020

Это будет примерно так:

class Permission(models.Model):
    pass

class Org(models.Model):
    pass

class UserOrg(models.Model):
    org = models.Foreignkey('Org')
    user = models.Foreignkey('User')
    permissions = models.ManyToManyField(Permission)

class User(models.Model):
    orgs = models.ManyToManyField(Org, through=UserOrg)

Я предлагаю вам либо прочитать документы , либо начать с их учебника для начинающих.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...