Я очень новичок в Python и Django. Я пытаюсь настроить модель пользователя для разных ролей, таких как Агенты, Брокеры, Компания и Клиент. Каждая из этих ролей может регистрироваться на сайте как пользователь. Затем агенты и брокеры могут иметь страницы с профилируемым профилем.Как обрабатывать несколько типов пользователей с помощью пользовательской модели Django 1.7
Должен ли я использовать пользовательскую модель пользователя или встроенную модель пользователя? У меня есть дополнительные свойства, такие как лицензия, местоположение, языки, фото и т. Д. Для агентов и брокеров.
class MyUser(AbstractBaseUser):
AGENTS = 'AG'
BROKERS = 'BR'
COMPANY = 'CP'
CUSTOMER = 'CM'
ROLE_IN_CHOICES = (
(AGENTS, 'Agent'),
(BROKERS, 'Broker'),
(COMPANY, 'Company'),
(CUSTOMER, 'Customer'))
first_name = models.CharField(max_length=100, blank=True)
second_name = models.CharField(max_length=100, blank=True)
middle_name = models.CharField(max_length=100, blank=True)
dob = models.DateField(blank=True, null=True)
phone = models.CharField(max_length=10)
secondary_phone = models.CharField(max_length=10, blank=True, null=True)
......
@property
def is_agent(self):
return self.role in (self.AGENTS)
@property
def is_customer(self):
return self.role in (self.CUSTOMER)
@property
def is_broker(self):*
return self.role in (self.BROKER)
@property
def is_company(self):
return self.role in (self.COMPANY)
....
Могу ли я не использовать базовую модель пользователя и достижения же? Я нахожусь на записи?
Как создать публичные страницы для этих ролей (Агенты, Брокеры)?
Это моя первая попытка с Python и Django. Я использую Django 1.7.7 с Python 3.4
Спасибо за быстрый ответ. В чем разница между расширением auth_user и AbstractBaseUser? Как связать разные типы пользователей с этой новой моделью? Создание разных моделей пользователей - лучший выбор по сравнению с одной моделью для всех? – timberHill
проверьте файл auth.models.py. Пользовательская модель расширяет AbstractModel, но имеет мета-поле «swappable». Для того, что я читал, это позволяет заменить модель на одну из своих, но я не уверен. Что касается привязки разных типов пользователей, используйте поле «groups» и следуйте той же логике. Вы можете расширить свою «Компанию» из auth.Group, дать ей больше полей и установить разрешения ... Позвольте мне добавить группы к ответу ... – brunofitas
Почему бы не использовать [django.contrib.auth.models.AbstractUser] (https://docs.djangoproject.com/en/1.7/topics/auth/customizing/#extending-django-s-default-user)? – sneawo