2013-12-12 5 views
2

Я создал Django 1.5 WebApp с пользовательской моделью User. И это работает. :)Многопользовательская аутентификация Django 1.5 или

У меня уже была вторая модель User2, которая использовала другое приложение. Эта вторая модель User2 не является приложением Django, поэтому она была построена с различными критериями. И он уже работает со многими пользователями.

Теперь у меня есть необходимость дать как User, так и User2 возможность войти и сделать совершенно разные вещи.

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

Я не вижу способа объединить User, User2, потому что у них совершенно разные поля. Плюс User2 имеет ForeignKey, что указывает на User.

После нескольких испытаний я обнаружил, что django поддерживает только один AUTH_USER_MODEL. Итак, теперь я не знаю, как действовать.

Я вижу следующие варианты:

  • создать абстрактную пользователя Model (AbstractUser), а затем подкласс User и User2, но я не знаю, как и если это будет работать

  • создать полностью новый Django WebApp, но для этого требуется большее (и, возможно, ненужное) усилие

  • найти другой способ аутентификации User2, возможно, написав мой собственный код аутентификации

Есть ли другой вариант? Который лучший?

Любая помощь будет оценена!

ответ

1

Я не уверен, что я точно понимаю вашу проблему, но если бы я это сделал, я думаю, что вы ищете OneToOneField.

Когда я работаю над проектами, в которых клиенты хотят настроить пользователей, одним из лучших решений является создание новой модели с OneToOneField, указывающей на пользователя Django, как модель Profile. Когда у вас есть объект User, вы можете сделать user.profile и получить профиль, связанный с пользователем (так что вы можете сделать user.profile.any_profile_field).

Он также идет по-другому, если у вас есть объект Profile вы можете получить доступ к User объекта как profile.user и сделать также profile.user.first_name

Так что, если она хорошо подходит с вопросом, как я думаю, вы должны изменить ваша модель должна быть OneToOneField до User примерно:

class Profile(models.Model): 
    user = models.OneToOneField(User) 
    field1 = models.CharField.... 
    #  ... ...  ... 
    #  Your fields here 
+0

благодарит за ваш ответ!Я закончил создание нового Django WebApp – user3096364

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