Могут ли пользователи иметь других пользователей в отношениях в Django? - PullRequest
1 голос
/ 19 апреля 2020

Итак, я довольно новичок в Django и знаю, что есть только один тип User. Мне интересно, как лучше всего настроить go для настройки моих моделей.

Моему сайту нужны 4 разных типа пользователей: администраторы (включая суперпользователя), учителя, студенты, родители. Я хочу, чтобы только администратор мог использовать встроенный интерфейс администратора. Я хочу, чтобы у учителей были некоторые функции администратора, но только во внешнем интерфейсе пользователя.

До сих пор я расширил AbstractBaseUser и BaseUserManager для создания пользователей, которым можно назначить 4 роли, упомянутые выше, и несколько разных вещей. Они работают, и я могу управлять с ними авторизацией просмотров страниц, но это лишь поверхностное представление о том, что я надеюсь сделать.

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

Могу ли я использовать сигналы для создания Teacher модели, которая принадлежит User с role учителя и той же Teacher моделью has_many`` Студент s. The ``Student также был бы создан мгновенно с User, имеющим role student.

Я размышляя о том, как бы вы создали Profile с новым User.

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

Или есть способ сделать это, просто оставив их как `` Users``` с ролями и связав их по-другому?

Спасибо за помощь .

1 Ответ

1 голос
/ 19 апреля 2020

Почему бы вам не попробовать это: -

https://simpleisbetterthancomplex.com/tutorial/2018/01/18/how-to-implement-multiple-user-types-with-django.html

Я думаю, что это ответ, который вы ищете.

Дайте мне знать, если вам нужны дальнейшие объяснения.

Удачное кодирование: -)

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