Django guardian user.has_perm false для существующих данных - PullRequest
0 голосов
/ 30 июня 2019

Я пытался дать разрешение с помощью опекуна Джанго. когда я пытаюсь дать разрешение для существующих данных, они показывают мне ложное сообщение, но когда я создаю новый объект, они показывают мне истину. что я делаю не так?

Мой код:

>>>from django.contrib.auth.models import User
>>>from print.models import *
>>>from guardian.shortcuts import assign_perm
>>>user = User.objects.create(username='tanvir',password='antu')
>>>excel = ExcelData.objects.all()
>>>assign_perm('delete_exceldata', user, excel)
>>>user.has_perm('delete_exceldata', excel)
>>>False

Но если я сделаю

>>>from django.contrib.auth.models import User
>>>from print.models import *
>>>from guardian.shortcuts import assign_perm
>>>user = User.objects.create(username='tanvir',password='antu')
>>>excel = ExcelData.objects.create(order_number='01245632145214')
>>>assign_perm('delete_exceldata', user, excel)
>>>user.has_perm('delete_exceldata', excel)
>>>True

1 Ответ

1 голос
/ 30 июня 2019
excel = ExcelData.objects.all()

даст вам набор запросов, а

excel=ExcelData.objects.create(order_number='1245632145214')

даст вам объект.

Вы можете назначить только разрешение для объекта

если вы хотите назначить разрешение для набора запросов, сделайте это внутри цикла

user = User.objects.create(username='tanvir',password='antu')
excel = ExcelData.objects.all()
for obj in excel:
    assign_perm('delete_exceldata', user, obj)
    user.has_perm('delete_exceldata', obj) # this will give you status for each obj
...