Как я могу связать некоторые, но не все модели с пользователями, использующими Django? - PullRequest
0 голосов
/ 10 октября 2019

У меня есть проект, который включает в себя два разных приложения: пользователи и школа. В моей текущей реализации пользовательское приложение содержит пользовательский класс пользователя, производный от абстрактного пользователя Djagno. Он определяет разрешенные типы пользователей как ученик или учитель, и пользователь должен выбрать один во время регистрации. Школьное приложение содержит модель классной комнаты, которая мне нужна для учеников и одного или нескольких учителей.

У меня есть две основные проблемы. Первый касается того, как связать модель классной комнаты только с конкретными пользователями, ограничивающими их доступ в зависимости от их типа. Я попытался использовать отношение ManyToManyField в модели классной комнаты, чтобы связать экземпляр с пользователем, который его создал (а затем я позже позволил бы пользователю добавлять студентов). Похоже, я не правильно понимаю это поле - это фактически все пользователи для всех экземпляров класса. Это, очевидно, не соответствует моему требованию ограничить доступ между различными экземплярами классной комнаты.

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

Я также поиграл с созданием групп с именами, такими как "Classroom_A_teachers" и "Classroom_A_students". "и затем назначая им разрешения. Этот подход кажется более сложным, чем необходимо.

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

Проблема вторая - добавить модель учителя и ученика. Я хотел бы позволить пользователю, зарегистрированному в качестве учителя, иметь возможность создавать экземпляр класса, а затем заполнять этот класс экземплярами учащихся. Студенты также могут при желании создать учетную запись. Они получат идентификатор класса от своего учителя, введут его, и их учетная запись будет затем привязана к экземпляру класса. Как я могу затем связать этого пользователя с существующей моделью ученика? Я играл с этой концепцией безуспешно.

Любое понимание очень ценится!

1 Ответ

0 голосов
/ 10 октября 2019

Похоже, я не правильно понимаю это поле - оно фактически всех пользователей для всех экземпляров классной комнаты.

Это не должно делать это. Так может выглядеть в Django Admin. На самом деле в поле ManyToMany только те, которые выделены / выделены серым.

ManyToMany подходит для вашего случая использования.

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