#python #django #django-models #django-rest-framework #django-admin
#python #django #django-модели #django-rest-framework #django-admin
Вопрос:
Я просто хочу отдельную таблицу для обычного пользователя и пользователя-администратора.
Комментарии:
1. Зачем это нужно? Это еще больше усложнило бы систему аутентификации и т.д.
2. Просто чтобы игнорировать некоторые ненужные поля. Это требование для моего проекта. Есть какие-либо обходные пути?
Ответ №1:
Я согласен с комментарием Уиллема, но вы можете попробовать несколько разных шаблонов:
class BaseUser(AbstractBaseUser...):
''' base user class '''
first_name = models.CharField(...)
last_name = models.CharField(...)
@property
def is_normal_user(self):
try:
return self.normal_user and True
except:
return False
@property
def is_admin_user(self):
try:
return self.admin_user and True
except:
return False
class NormalUser(models.Model, ...):
''' normal user, extends BaseUser class '''
base_user = models.OneToOneField('BaseUser', related_name='normal_user', ...)
email = models.CharField(...)
class AdminUser(models.Model, ...):
''' admin user, extends BaseUser class '''
base_user = models.OneToOneField('BaseUser', related_name='admin_user', ...)
email = models.CharField(...)
Тогда вы можете сделать что-то подобное в своих представлениях:
user = BaseUser.objects.get(id=<the user id>)
if user.is_normal_user:
# do something for normal users:
if user.is_admin_user:
# do something for admin users: