2017-01-25 6 views
1

В моем проекте Django (который является REST API) у меня возникла проблема, которая, вероятно, была встречена раньше, но я не могу найти ее в любом месте. В моем проекте у меня есть два разных типа пользователей: «Пользователи мобильных приложений» и «Бизнес-пользователи». Пользователи мобильных приложений могут войти в наше мобильное приложение и посмотреть содержимое вокруг них на основе геолокации. Бизнес-пользователи могут войти в портал веб-администратора и создать контент, который видит пользователь мобильного приложения. В качестве предостережения существует также возможность того, что бизнес-пользователь также может быть пользователем приложения. Я хочу, чтобы позволить бизнес-пользователю и пользователю приложения иметь один и тот же адрес электронной почты, но при этом быть уникальным для своей модели.Несколько AUTH_USER_MODEL В django

Теперь Проблема заключается в том, как можно создать два счета (первый это мобильное приложение & второй является бизнес) с той же электронной почты ID ..

+0

Вам действительно нужно создать две записи пользователя для этого сценария? Группы/разрешения могут быть хорошим способом решить эту проблему - https://docs.djangoproject.com/en/1.10/topics/auth/default/#permissions-and-authorization. – user92454

+0

да, я должен создать две записи, beacuse user. Информация может отличаться. Я хочу, чтобы все разные для обоих типов пользователей. Не должно быть никаких отношений. –

ответ

0

Допустим, что ваш основной AUTH_USER_MODEL модель предназначена для хранения «Мобильные пользователи приложения» , Вы должны добавить еще одну модель, в которой хранится дополнительная информация для «Бизнес-пользователей», и она должна быть связана с моделью AUTH_USER_MODEL, вот и все.

+0

В этом случае Как мы создадим две спящие счета (мобильный пользователь и бизнес) с тем же идентификатором электронной почты? –

+0

Группы и разрешения на помощь. Это утомительно, но вы можете сделать одно: Создайте соответствующие разрешения и группы. Например, создайте спецификацию разрешений для бизнес-пользователей, чтобы иметь возможность получить доступ ко всем конечным точкам API и пользователя мобильного приложения, чтобы иметь возможность доступа к частям API, связанным с мобильным приложением. Таким образом, вы можете использовать ту же модель проверки подлинности и поведение управления для каждого типа пользователя изнутри каждого представления, либо с помощью Mixin, если несколько представлений должны вести себя несколько схожим или путем настройки каждого представления, чтобы вести себя по-другому, на основе доступа пользователя к нему. –

+0

Смешно, этот вопрос тоже решил мою проблему. –

0

Предположим, у вас есть обычай User. Тогда

class MobileUser: 
    credentials = models.OneToOne(User, related_name='mobile_user') 
    ... 

class BusinessUser: 
    credentials = models.OneToOne(User, related_name='business_user') 
    ... 

Вы можете добавить необходимые поля в пользовательских User, которые могут позволить вам лучше управлять доступом (например, булева is_business и is_mobile). Также используйте roles или permissions.

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