2010-02-18 4 views
0

Я разрабатываю SAAS и занимаюсь тем сложнее, чем занимаюсь, почему мне нужно использовать «Пользователь» для чего-либо другого, кроме меня. Я не знаю почему, но мне кажется, что я, как разработчик/администратор всего программного обеспечения, с полным доступом к Django Admin (например, Eye of Sauron), имеет тот же тип объекта User, что и «Учетная запись «Пользовательский профиль держателя» имеет. Пожалуйста, помогите мне понять, почему это необходимо.Django: Использование пользовательской системы AUTH, почему модель User всегда нужна?

Пример:

class Account(models.Model): # represents copporate customer 
    admin = models.ForeignKey(User) 
    # other fields ... 

class UserProfile(models.Model): 
    user = models.ForeignKey(User) 
    account = models.ForeignKey(Account) 

Он чувствует, как я смешиваясь встроенную функциональность администратора с функциональностью моих Владельцев банковского счета пользователей. Это просто для повторного использования таких элементов, как request.user и т. Д.?

ответ

1

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

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

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

+0

@ Andy Hume Все атрибуты: имя пользователя, имя_пользователя, имя_файла, адрес электронной почты, пароль, is_staff, is_active, is_superuser и т. Д. Нужно ли использовать все это при создании пользователя? Наверное, мне просто сложно понять, как все эти атрибуты могут вписаться в мою собственную систему. Должен ли я использовать все эти атрибуты? Если is_superuser = True, это не дает им полный доступ, если они просто набирают www.example.com/admin/? Я посмотрел на Django-Annoying, и у него есть AutoOneToOneField(), который создает пользователя для вас, но как насчет установки всех атрибутов? – orokusaki

+0

Вам не обязательно использовать все атрибуты. Вы можете выявить как можно меньше или много, в зависимости от того, что вы хотите, чтобы определенный тип пользователя мог это сделать. Да, is_superuser = Истина должна быть зарезервирована только для вас самих и для тех немногих, кому она нужна. Пользователь «нормальный» имел бы значение False. Вы можете установить все атрибуты, хотя OneToOneField, если они вам нужны, например. profile.user.last_name = "Jones" –

Смежные вопросы