django - 如何允许 Django 中的用户查看来自同一模型的特定数据
问题描述
我在向 Django 中的管理员用户授予权限时遇到了一个问题,即如何限制用户只能查看来自同一模型的用户特定数据。我的意思是,如果 2 个用户可以将数据添加到同一个模型,那么如何限制他们只能访问该数据。
解决方案
在该模型中,您需要指定哪个用户插入了该值。如果您有用户模型,那么您可以将新字段添加到您的模型中作为用户,这是外键字段。
当您使用用户属性插入数据时,您可以使用用户(user.id)轻松过滤它们
例如,如果您有 Customer 模型,您可以使用用户的 id 过滤值(在本例中为 Mercer_id):
customer = Customer.objects.filter(email=email, merchant_id=merchant_id).all()
我们的模型如下所示:
class Customer(models.Model):
merchant = models.ForeignKey(Merchant, on_delete=models.DO_NOTHING)
name = models.CharField(max_length=128, null=True)
surname = models.CharField(max_length=128, null=True)
email = models.EmailField(max_length=255, null=True)
您可以定义如下权限:
class Task(models.Model):
...
class Meta:
permissions = [
("change_task_status", "Can change the status of tasks"),
("close_task", "Can remove a task by setting its status as closed"),
]
您可以通过以下方式检查:
user.has_perm('app.close_task')
希望能帮助到你,
推荐阅读
- c# - C# Swashbuckle:过时的模型属性显示没有大摇大摆的变化
- angular - Angular 2 - 加载元素后填充选择的选项
- mysql - 下面有两个sql查询有什么区别
- c++ - 如何使 SWIG 绑定类在 Lua 中使用运算符?
- javascript - 使用 php ajax val() 从数据库中填充数据
- c# - 在循环 C# 中使用 XPath
- login - Ionic 3 应用程序 - 即使应用程序退出也保持记录
- c# - WPF - 在第二个窗口中使用向导初始化对象
- django - 使用 JSONRESPONSE 返回对象
- c# - string.Format 当格式为变量时