【发布时间】:2018-12-17 07:17:45
【问题描述】:
我是 django 和 drf 的新手,所以这是我认为可以帮助我的地方。
我正在构建一个办公室考勤系统。
现在这里的用户是 1. 运营经理 (OM) 2. 管理员 3. 员工 4. CEO。 OM 可以创建一个新用户并指定它是 admin、staff 还是 CEO。 Admin、Staff 和 CEO 有自己的权限。
我的问题是如何将这些角色和权限分配给 django rest 框架中的用户类型。 我看过关于自定义权限的 drf 文档,它说扩展 BasePermission 类并实现 2 个方法。
我的要求是新用户不要自己注册,而是 OM 为他们创建一个新用户。
编辑 1:
我已经实现了这种方式。这行得通吗?
型号:
class User(AbstractUser):
user_type = {
('admin', 'Admin'),
('staff', 'Staff'),
('om', 'OM'),
}
user_choice = CharField(choices=user_type, blank=True, max_length=255)
序列化器:
class UserSerializers(serializers.ModelSerializer):
first_name = serializers.ReadOnlyField()
groups = GroupSerializers(many=True)
user_type = serializers.CharField()
class Meta:
model = User
fields = ('first_name', 'last_name','address','contact', 'email', 'date_of_birth', 'branch', 'groups', 'user_type')
def user_group(self, data):
user_type = data.get("user_type", "")
email = data.get("email")
user = User.objects.get(email = 'email')# get user object from post request
if user_type == "admin":
grp = Group.objects.get_or_create(name='Admin')
user.group.add(grp)
elif user_type == "staff":
grp = Group.objects.get_or_create(name='Staff')
user.group.add(grp)
else:
grp = Group.objects.get_or_create(name='OM')
user.group.add(grp)
查看:
class UserCreateView(ModelViewSet):
model = User
serializer_class = UserSerializers
【问题讨论】:
-
可能,在创建新用户时使用另一个模型
UserPermission设置权限类型。 -
看看this。
-
我没有得到如何使用另一个模型
UserPermission来设置权限?不使用任何第三方库就不可能吗? -
没有第三方库绝对可以。
标签: django django-rest-framework