如何允许Django中的用户查看来自同一模型的特定数据

问题描述 投票:0回答:1

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

django permissions
1个回答
0
投票

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

当您使用用户属性插入数据时,可以使用用户(user.id)轻松过滤它们

例如,如果您有客户模型,则可以使用用户的ID(在本例中为商人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')

希望它有帮助,

© www.soinside.com 2019 - 2024. All rights reserved.