作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有这样一个模型:
User:
name
role
它的角色可以采用以下值:
并且由于用户可以拥有一个、两个或所有角色,因此我选择以位掩码的形式实现此功能,其中角色可以采用以下值:
或它们的任意组合:
editor and consultant: 5 # (permission bits 1+4)
当然如果我想知道用户是否设置了某个角色位,我可以调用它的has_role
方法:
def has_role(self, role):
return not self.role & role is 0
但是,我不知道我可以使用什么 Django 小部件或如何为此目的制作一个小部件,我唯一知道的是我可以在模型字段上使用 choices 关键字来限制其选项,但它不会让我组合多个选项。
我该如何实现?
模型如下所示:
class User(models.Model):
ROLES = (
(1, 'editor'),
(2, 'supervisor'),
(4, 'consultant'),
)
name = models.CharField(max_length=200)
role = models.IntegerField(choices=ROLES)
def has_role(self, role):
return not self.role & role is 0
我正在使用 django 1.9 和 python 3.5
最佳答案
你确定你需要位掩码吗? Django 中通常的方法是创建 3 个 bool 字段。
class User(models.Model):
name = models.CharField(max_length=200)
is_editor = models.BooleanField(default=False)
is_supervisor = models.BooleanField(default=False)
is_consultant = models.BooleanField(default=False)
关于python - 如何在 Django 选择字段中实现位掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36143498/
我是一名优秀的程序员,十分优秀!