Джанго auth.User - PullRequest
       1

Джанго auth.User

1 голос
/ 03 сентября 2010

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

a) Я хочу использовать django-registration.б) Я могу указать User.get_profile только на одну модель профиля.

Как это сделать хорошим способом?

Ответы [ 2 ]

0 голосов
/ 03 сентября 2010

Я не эксперт ни в python, django, ни в базе данных, но несколько недель назад я столкнулся с чем-то похожим, и на #django кто-то посоветовал мне использовать Generic для достижения этой цели.

Я создалМодель UserProfile, которая нравится (через OneToOnefield) «истинному» профилю, и с использованием contrib.content-type и родового отношения я могу использовать несколько различных типов porfile.

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

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

Другой альтернативой может быть создание производного настраиваемого поля TextField и использование его в качестве хранилища для словаря, который вы выбираетесохраните и откройте его при загрузке.При некотором взломе вы наверняка сможете сопоставить некоторые атрибуты модели с ключом словаря.Это дало бы большую гибкость.

Бесплатный совет для вас: я также использую приборы для тестирования своего приложения и забыл проверить, был ли необработанный параметр сигнала post_save True, чтобы предотвратить выполнение создания UserProfile при использовании управления.py loaddata.Поскольку я закодировал создание «истинного» профиля в моем обратном вызове post_save, исключение, что за странность, пока я не выясню, что происходит.

Полезный ресурс:

0 голосов
/ 03 сентября 2010

Я не использовал django-регистрацию, поэтому я не знаю, что это влечет за собой. Для второй части вашего вопроса один из способов будет

  1. Свяжите UserProfile с каждым User
  2. Добавить различные виды ProfileProperty классов и связать их с UseProfile, используя родовое отношение .

Я знаю, это немного натянуто.

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