我在向Django中的管理员用户授予权限时遇到了一个问题,即如何限制用户仅查看来自同一模型的特定于用户的数据。我的意思是,如果2个用户可以向同一模型添加数据,那么如何限制他们仅访问该数据。
在该模型中,您需要指定哪个用户插入了该值。如果您有用户模型,则可以将新字段作为用户添加到模型中,这是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')
希望它有帮助,