【发布时间】:2016-04-27 06:28:37
【问题描述】:
我正在使用 django,我正在使用 drf 构建一个 restful api,但我有 4 个不同的用户 管理员,他可以访问管理面板 可以在网站上做任何事情但无法访问管理面板的经纪人 只能进行 2 次购买和搜索的买家 中间人,除了一件事什么都能做 我现在正在做的方式是我有用户之间所有共享字段的基类
class siteuser(models.Model):
name = models.CharField(
max_length=255, null=False, blank=False, db_index=True)
email = models.EmailField(max_length=254, unique=True)
address = models.CharField(max_length=255, null=False, blank=False)
city = models.CharField(max_length=254, null=False, blank=False)
active = models.BooleanField(default=1)
about = models.TextField()
class Meta:
abstract = True
然后我有 3 个其他模型,它们具有不同的字段和与用户模型的一对一关系
class manger(siteuser):
manger = models.OneToOneField(settings.AUTH_USER_MODEL)
manager_licsences_number = models.IntegerField()
class buyer(siteuser):
buyer = models.OneToOneField(settings.AUTH_USER_MODEL)
class seller(siteuser):
seller = models.OneToOneField(settings.AUTH_USER_MODEL)
trust_number = models.IntegerField()
但我觉得这种方法是错误的,我不得不在我的脑海中思考
1- 我一直在寻找创建自己的抽象基类用户模型,然后将该模型用作我的用户模型,并为管理员用户使用管理面板。
2- 将用户模型抽象 3 次并制作 3 个用户对象并为三个不同的用户建立自定义誓言,我认为这不是一个好方法
那么你们认为最好的处理方法是什么?
【问题讨论】:
标签: django django-models django-admin