Как разрешить пользователям In Django видеть данные c той же модели - PullRequest
0 голосов
/ 24 февраля 2020

Я сталкиваюсь с проблемой при предоставлении разрешения администраторам в Django о том, как запретить пользователям видеть только данные пользователя c из той же модели. Я имею в виду, что если 2 пользователя могут добавлять данные в одну модель, то как им ограничить доступ только к этим данным.

1 Ответ

0 голосов
/ 24 февраля 2020

в этой модели вам нужно указать, какой пользователь вставил это значение. Если у вас есть модель User, вы можете добавить новое поле в модель как User, которое является полем ForeignKey.

Когда вы вставили свои данные с помощью свойства user, вы можете легко отфильтровать их с помощью user (user.id)

Например, если у вас есть модель Customer, вы можете отфильтровать значение по идентификатору пользователя (в данном случае это merchant_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')

Надеюсь, это поможет,

...