首页 > 解决方案 > 如何允许 Django 中的用户查看来自同一模型的特定数据

问题描述

我在向 Django 中的管理员用户授予权限时遇到了一个问题,即如何限制用户只能查看来自同一模型的用户特定数据。我的意思是,如果 2 个用户可以将数据添加到同一个模型,那么如何限制他们只能访问该数据。

标签: djangopermissions

解决方案


在该模型中,您需要指定哪个用户插入了该值。如果您有用户模型,那么您可以将新字段添加到您的模型中作为用户,这是外键字段。

当您使用用户属性插入数据时,您可以使用用户(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')

希望能帮助到你,


推荐阅读