首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django - Python -自定义用户模型中具有BooleanField的多个用户类型& OneToOne关系

Django - Python -自定义用户模型中具有BooleanField的多个用户类型& OneToOne关系
EN

Stack Overflow用户
提问于 2017-02-15 22:03:02
回答 1查看 838关注 0票数 0

我正在构建一个web应用程序,它将允许两种不同类型的用户登录,每个用户组都可以访问站点上的不同页面。

由于收集到的信息对于每种类型的用户都是相似的,所以我计划只使用一个自定义用户模型,并为每个用户类型使用两个布尔字段。该模式的定义如下:

代码语言:javascript
运行
复制
class My_Users(AbstractBaseUser):
...
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
is_typeA = models.BooleanField(default=False)
is_typeB = models.BooleanField(default=False)

...

我打算在其他模型中使用基于用户in的OneToOne字段,用于typeA和typeB用户。因此,例如,可以有:

代码语言:javascript
运行
复制
class Model1(models.Model):
    id = models.OneToOneField(TypeA, on_delete=models.CASCADE,  primary_key=True,)
    ...

class Model2(models.Model):
    id = models.OneToOneField(TypeB, on_delete=models.CASCADE,  primary_key=True,)
    ...

我的问题如下:

1/这将意味着在我的用户模型中创建的一些in将是typeA,另一些将是typeB。这会不会成为一对一的解脱的问题?也就是说,id不是增量(类型A可以是id 1、3、4、5等)是一个问题吗?而B型可能有ids 2、6、7等)一对一的关系。

这是最好的设置,以确保应用程序是可伸缩的。如果没有,那会是什么呢?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-15 23:06:17

  1. 不,这不是一对一关系的问题。正如在这就是答案中所指出的,OneToOne只是一个unique=True和反向关系为单数的ForeignKey。
  2. 将有助于更详细地了解如何根据用户类型来划分应用程序,以及您所说的“可伸缩”是什么意思。Django的组和权限是一个更通用的解决方案,用于“每个用户组都可以访问站点上的不同页面”,然后您也可以在创建对象时检查组成员身份。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42260925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档