Я строю систему, в которой у многих учетных записей не будет учетных данных (например, компаний), если не указано иное. Чтобы добиться этого, у меня есть следующая модель аккаунта (еще не реализована, в настоящее время проектируется на листе бумаги):
Table: Account
Fields: ID, fname, lname, type, created_at, activated_at
Table: AccountCredentials
Fields: Account ID, email, password
Relations:
Account <- 1-to-1 -> AccountCredentials
Все разрешения, операции и т. Д. Будут выполняться над моделью Аккаунта; Итак, модель Account будет моделью пользователя Django Auth.
До этого я пользовался пользовательскими моделями и менеджерами; Тем не менее, это то, что я не уверен, как реализовать.
Как мне сказать модели AbstractBaseUser для аутентификации с использованием credentials.email
и credentials.password
(credentials
- это имя отношения между Account и AccountCredentials)? После проверки исходного кода AbstractBaseUser и проверки некоторых файлов кажется, что я могу переопределить метод get_username
; так что поле имени пользователя читается из учетных данных. Однако я не уверен, как сделать то же самое для пароля, так как он жестко задан в модели.