Расширьте модель группы из django .contrib.auth.model, удалите уникальное ограничение на имя и добавьте уникальное имя вместе, поля организации - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь расширить поле групповой модели и организации django на него для создания ролей на основе разрешений, указывающих c для организации. В основном я хочу удалить ограничение уникальности для поля имени, добавить поле с названием организация и сделать имя и организацию уникальными вместе.

Я пробовал это

class MyGroup(Group):
    name = models.CharField(max_length=200)
    organization = models.ForeignKey(Organization)

    class Meta:
        unique_together = ('name', 'organization',)

Я получаю ошибку users.MyGroup.name: (models.E006) Поле 'name' конфликтует с полем 'name' из модели 'auth.group'.

1 Ответ

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

Вам понадобится обезьяна-патч для модели Group, которая будет хакерской.

Я, вероятно, подойду к ней, сделав следующее:

  • Monkey patch модель группы в каком-то новом приложении под названием contrib.auth.
  • . Решите проблемы миграции - надеюсь, вы сможете создать их в одном из каталогов миграции приложений вашего проекта, в идеале contrib.auth.
  • Monkey patch представление GroupAdmin в новом приложении contrib.auth.
  • Убедитесь, что фактическая авторизация работает с новым уникальным ограничением. Некоторые поиски могут предполагать, что name уникален. Вам нужно будет обезопасить их от патчей / модификаций.

Опять же, я чувствую, что такой подход не может быть правильным. Возможно, вам лучше поискать неосновную библиотеку, чтобы решить эту проблему, или развернуть свою собственную.

...