如何动态地将django组添加到请求用户
how to add django groups to a request user dynamically
我有一个名为 Employee 的模型,它有一个员工类别(如教师、非教学或图书管理员)的外键字段。我有两个名为 'Library Management' 和 'Teacher Management' 的组。
这是我的员工模型代码
class EmployeeAdmission(User):
User.username = models.CharField(max_length=50)
User.password = models.CharField(max_length=50)
employee_number =models.CharField(max_length=10)
joining_date = models.DateField()
employee_first_name = models.CharField(max_length=20)
employee_middle_name = models.CharField(max_length=20,blank=True)
employee_last_name = models.CharField(max_length=20,blank=True)
employee_email = models.EmailField(max_length=254)
gender = models.CharField(choices=GENDER,max_length=20)
date_of_birth = models.DateField()
employee_category = models.ForeignKey(AddEmployeeCategory,on_delete=models.CASCADE,related_name='employee')
job_title = models.CharField(max_length=35)
qualification = models.CharField(max_length=30)
Experience_info = models.TextField(max_length=200)
total_experience = models.CharField(max_length=20,choices=YEAR)
我创建了一些员工类别,例如教师和图书管理员
我的逻辑基于 post 请求时的类别。
如果 employee_category 为 1,则检查 Library Management 组并将该组添加到请求用户,或者如果 employee_category 为 2,则检查 Library Management 组并将该组添加到请求用户。
这是我的 employee.views.py
代码
@csrf_exempt
def post(self, request, format=None):
json = JSONRenderer().render(request.data)
stream = BytesIO(json)
data = JSONParser().parse(stream)
serializer = EmployeeDetailSerializer(data=data)
if serializer.is_valid():
category = serializer.fields.get('employee_category',default=None)
if (category == 1 ):
library_group = Group.objects.get(name='Library Management')
request.user.groups.add(library_group)
request.user.save()
else :
teacher_group = Group.objects.get(name='Teacher Management')
request.user.groups.add(teacher_group)
request.user.save()
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
我已经参考了这些链接 here。
我能够保存用户,但我仍然无法将组添加到用户(未反映在用户模型上)。
请知道解决方法的朋友帮忙。提前谢谢你。
经过大量研究,我找到了答案。
当我使用这段代码时。
request.user.groups.add(library_group)
request.user.save()
组仅保存在具有管理员而不是 "EmployeeAdmission" 实例的用户上。所以为了获得 "EmployeeAdmission" 的实例,我是这样做的。
employee = serializer.save()
在获得该模型的实例后,我能够保存它。它反映在数据库中。
我使用的代码是这样的
employee.groups.add(library_group)
employee.save()
我有一个名为 Employee 的模型,它有一个员工类别(如教师、非教学或图书管理员)的外键字段。我有两个名为 'Library Management' 和 'Teacher Management' 的组。
这是我的员工模型代码
class EmployeeAdmission(User):
User.username = models.CharField(max_length=50)
User.password = models.CharField(max_length=50)
employee_number =models.CharField(max_length=10)
joining_date = models.DateField()
employee_first_name = models.CharField(max_length=20)
employee_middle_name = models.CharField(max_length=20,blank=True)
employee_last_name = models.CharField(max_length=20,blank=True)
employee_email = models.EmailField(max_length=254)
gender = models.CharField(choices=GENDER,max_length=20)
date_of_birth = models.DateField()
employee_category = models.ForeignKey(AddEmployeeCategory,on_delete=models.CASCADE,related_name='employee')
job_title = models.CharField(max_length=35)
qualification = models.CharField(max_length=30)
Experience_info = models.TextField(max_length=200)
total_experience = models.CharField(max_length=20,choices=YEAR)
我创建了一些员工类别,例如教师和图书管理员
我的逻辑基于 post 请求时的类别。 如果 employee_category 为 1,则检查 Library Management 组并将该组添加到请求用户,或者如果 employee_category 为 2,则检查 Library Management 组并将该组添加到请求用户。
这是我的 employee.views.py
代码@csrf_exempt
def post(self, request, format=None):
json = JSONRenderer().render(request.data)
stream = BytesIO(json)
data = JSONParser().parse(stream)
serializer = EmployeeDetailSerializer(data=data)
if serializer.is_valid():
category = serializer.fields.get('employee_category',default=None)
if (category == 1 ):
library_group = Group.objects.get(name='Library Management')
request.user.groups.add(library_group)
request.user.save()
else :
teacher_group = Group.objects.get(name='Teacher Management')
request.user.groups.add(teacher_group)
request.user.save()
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
我已经参考了这些链接 here。 我能够保存用户,但我仍然无法将组添加到用户(未反映在用户模型上)。
请知道解决方法的朋友帮忙。提前谢谢你。
经过大量研究,我找到了答案。
当我使用这段代码时。
request.user.groups.add(library_group)
request.user.save()
组仅保存在具有管理员而不是 "EmployeeAdmission" 实例的用户上。所以为了获得 "EmployeeAdmission" 的实例,我是这样做的。
employee = serializer.save()
在获得该模型的实例后,我能够保存它。它反映在数据库中。
我使用的代码是这样的
employee.groups.add(library_group)
employee.save()