Skip to main content
 首页 » 编程设计

python之Django : how to Identify who is saving the model from program

2024年11月01日23TianFang

我如何从 Django 代码中检查当前正在保存模型的用户?

我需要抛出验证错误或从中向他分配一些权限。

请您参考如下方法:

假设您从 View 函数执行 model.save(),您可以使用 request.user 获取当前用户。

from django.contrib.auth.models import Permission 
 
def myview(request): 
    model = Model(...) 
    model.save() 
    permission = Permission.objects.get(codename="...") 
    request.user.user_permissions.add(permission) 

编辑:访问表单中的请求

从表单验证代码获取请求的最简单方法可能是在表单实例上设置一个属性:

def myview(request): 
    ... 
    form = SomeForm(...) 
    form.request = request 

在您的表单验证逻辑中,您现在可以使用 self.request 来访问用户:

class SomeForm(...): 
    def clean_somefield(self): 
        data = self.cleaned_data["somefield"] 
        if self.request.user....: 
             raise ValidationError()