Каков рекомендуемый способ реализации нескольких пользовательских типов с использованием новой функциональной возможности настраиваемой пользовательской модели Django 1.5?
Я хотел бы иметь два типа пользователей: частные пользователи и торговые пользователи, каждый из которых имеет свой собственный набор обязательных полей.
Есть два способа, которые я могу реализовать, чтобы реализовать это:
1) Наследование с несколькими таблицами
class BaseUser(AbstractBaseUser):
email = models.EmailField(max_length=254, unique=True)
# ...
class PrivateUser(BaseUser):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
# ...
class TradeUser(BaseUser):
company_name = models.CharField(max_length=100)
# ...
Есть ли проблемы с использованием наследования нескольких таблиц в сочетании с настраиваемой пользовательской моделью?
2) Использование одной модели с атрибутом "type"
class User(AbstractBaseUser):
email = models.EmailField(max_length=254, unique=True)
user_type = models.CharField(max_length=30, choices={
'P': 'Private',
'T': 'Trade',
})
first_name = models.CharField(max_length=30, blank=True)
last_name = models.CharField(max_length=30, blank=True)
company_name = models.CharField(max_length=100, blank=True)
# ...
Этот метод потребует некоторой условной проверки, зависящей от user_type
.
Какой из этих методов лучше всего подходит для моего использования? Или, может быть, есть лучший способ достичь этого?
Также, в случае номер 1, как я могу фильтровать своих пользователей?
Спасибо.