我想通过models.py方法获取当前登录的用户(request.user)save。我想检查用户的角色,并查看它是否可以根据其角色执行某些操作。
request.user
save
models.py :
class TimeSheet(models.Model): check_in_time = models.TimeField() check_out_time = models.TimeField() class Tasks(models.Model): time_sheet = models.ForeignKey(TimeSheet) project = models.ForeignKey(Project) start_time = models.TimeField() end_time = models.TimeField() def save(self, *args,**kwargs): project = SpentTime.objects.get(project__project__id = self.project.id) start = datetime.datetime.strptime(str(self.start_time), '%H:%M:%S') end = datetime.datetime.strptime(str(self.end_time), '%H:%M:%S') time = float("{0:.2f}".format((end - start).seconds/3600.0)) if common.isDesigner(request.user): SpentTime.objects.filter(project__project__id = self.project.id).update(design = float(project.design) + time) if common.isDeveloper(request.user): SpentTime.objects.filter(project__project__id = self.project.id).update(develop = float(project.develop) + time) super(Tasks, self).save(*args, **kwargs)
在这里,该Tasks模型被用作Timesheet模型中的内联。我想检查当前登录用户的角色,并根据用户角色更新另一个模型。在这里,我需要request.user检查当前用户的角色。我没有使用任何形式或模板,而是完全利用了Django admin。是否有任何方法可以进入request.user该save方法或检查并更新admin.py中另一个模型中的值?
Tasks
Timesheet
您可以从另一个角度解决这个问题。不应更改模型的save方法,而应覆盖AdminSitessave_model方法。如您所指出的,您将在其中拥有请求对象,并可以访问登录的用户数据。
save_model
看看文档的这一章:Django ModelAdmin文档save_model