Django, нужно несколько указанных групп пользователей - PullRequest
0 голосов
/ 16 ноября 2010

Мне нужно, скажем, инструкторы, студенты и так далее. Обе группы являются пользователями, могут войти и т. Д. Но, например, инструктору нужно много-много отношений с моделями предметов. Как этого добиться?

Ответы [ 3 ]

1 голос
/ 17 ноября 2010

Я бы здесь не использовал наследников.Просто создайте модели, которые указывают на пользователя:

class Instructor(models.Model):
    user = models.OneToOneField(User)
    # other fields
    subjects = models.ManyToManyField('Subject')

class Student(models.Model):
    # other fields
    user = models.OneToOneField(User)

class Subject(models.Model):
    name = models.CharField(max_length=40)

Преимущество этого состоит в том, что общие функциональные возможности пользователя отделены от функций инструктора и ученика.На самом деле нет никаких оснований рассматривать преподавателей или студентов как пользователей.

1 голос
/ 16 ноября 2010

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

Здесь хороших примеров обоих .

РЕДАКТИРОВАТЬ: Есть также хороший пост Джеймса Беннетта здесь .

0 голосов
/ 16 ноября 2010

Вы не можете указать Subject для модели User-who-is-Instructor, она не может быть выражена в SQL.

Что вы можете сделать, это, например, указать Subject to User model, убедившись в том, что в вашем коде вы создаете только экземпляры Subject для пользователей, которые являются членами группы Instructors.

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