python - 如何将新列添加到权限表
问题描述
我是 django new bay,我做了很多搜索但没有结果。
我需要将client_id 添加到 django 权限模型(保存和检索),因此在保存用户权限时 client_id 应该保存权限,当使用 has_perm 它应该检查当前用户的权限以获取当前 client_id
添加示例:
user.user_permissions.add(permiObject, request.session['ClientId'])
如果我检查,在模板中:
{% if perms.app_name.perm_code %}
此检查应针对当前 ClientId
Django Permission 模型字段是: name,content_type,codename
我需要这样的::name,content_type,codename,client_id
解决方案
我讨厌给出这样的答案,因为它不是你直接问题的答案,但它看起来真的像一个XY 问题。
如果我对您的理解正确,您希望为每个客户 ID 的每个用户添加权限。
Django 权限背后的想法是它们应该在迁移时创建,即在您的服务器开始运行之前。在这里您添加了一些不自然的东西,客户端是在运行时添加的,因此您还需要在运行时修改权限。所以看起来 Django 权限不是你需要的。
如果我是您,我会做的只是为我自己的权限添加一个模型并通过外键将其连接到用户。
例如(伪代码):
class MyPermission(Model):
name = models.CharField(max_length=10)
client = models.CharField(max_length=10)
user = models.ForeignKey(User, on_delete=models.CASCADE)
运行迁移,然后为某些用户添加新权限:
user.mypermission_set.create(name="write", client="123")
并测试用户是否有权限:
user.mypermission_set.filter(name="write", client="123").exists()
因此,如果我理解正确的话,希望这会有所帮助,而不是您想要的方式,而是提供相同的功能。
PS:也许你必须定义一个自定义用户模型,不确定 Django 是否会简单地接受mypermission_set
与标准用户模型一起使用,没有测试它。
推荐阅读
- firebase - 关闭应用程序时,Firebase FIrestore 侦听器是否取消订阅?
- forms - 播放 - 带有自定义错误消息的自定义验证
- list - 从列表中获取项目作为 Ansible 中的字符串
- reactjs - React 重置按钮中的井字游戏不起作用
- spring-boot - rsocket 使用 RSocket-Java 为 Spring Rsocket Server 路由元数据
- html - 如何在调整大小后将文本与顶部对齐php - 在 ajax URL 前面添加斜杠和不添加斜杠有什么区别
- php - PHP Sqlite Drop Table 未执行
- html - Angular:如何使内容可编辑的div的占位符持续存在,直到仅在输入内容时
- r - poLCA in R is not executing. I am getting a weird error message