Как получить список всех пользователей с определенной группой разрешения в Django

Предупреждение: [fункция] ожидает, что параметр 1 будет ресурсом, boolean задан

(более общий вариант Предупреждение: mysql_fetch_array () ожидает, что параметр 1 будет resource, boolean given )

Ресурсы - это тип в PHP (например, строки, целые числа или объекты). Ресурс является непрозрачным блобом без собственной значимой ценности. Ресурс специфичен и определен определенным набором функций или расширений PHP. Например, расширение Mysql определяет два типа ресурсов :

В модуле MySQL есть два типа ресурсов. Первый - идентификатор ссылки для подключения к базе данных, второй - ресурс, который содержит результат запроса.

Расширение cURL определяет другой два типа ресурсов :

... дескриптор cURL и мультирум cURL.

Когда var_dump ed значения выглядят так:

$resource = curl_init();
var_dump($resource);

resource(1) of type (curl)

Это все большинство ресурсов - это числовой идентификатор ((1)) определенного типа ((curl)).

Вы переносите эти ресурсы и передаете их различным функциям, для которых такой ресурс что-то значит. Обычно эти функции выделяют определенные данные в фоновом режиме, а ресурс - это просто ссылка, которую они используют для отслеживания этих данных внутри.


«... ожидает, что параметр 1 будет ресурсом, логическим данная "ошибка, как правило, является результатом непроверенной операции, которая должна была создать ресурс, но вместо этого вернула false. Например, функция fopen имеет это описание:

Возвращаемые значения

Возвращает ресурс указателя файла при успешном выполнении или FALSE

Таким образом, в этом коде $fp будет либо resource(x) of type (stream), либо false:

$fp = fopen(...);

Если вы не операция fopen будет успешной или неудачной и, следовательно, будет ли $fp действительным ресурсом или false и передать $fp другой функции, которая ожидает ресурс, вы можете получить вышеуказанную ошибку:

$fp   = fopen(...);
$data = fread($fp, 1024);

Warning: fread() expects parameter 1 to be resource, boolean given

Вам всегда нужно проверять возвращаемое значение функций, которые пытаются выделить ресурс , и может выйти из строя :

$fp = fopen(...);

if (!$fp) {
    trigger_error('Failed to allocate resource');
    exit;
}

$data = fread($fp, 1024);

Связанные ошибки:

57
задан niton 16 April 2015 в 02:30
поделиться

5 ответов

Если вы хотите получить список пользователей по разрешению, посмотрите на этот вариант:

from django.contrib.auth.models import User, Permission
from django.db.models import Q

perm = Permission.objects.get(codename='blogger')  
users = User.objects.filter(Q(groups__permissions=perm) | Q(user_permissions=perm)).distinct()
72
ответ дан 24 November 2019 в 19:23
поделиться

Это было бы самым легким

from django.contrib.auth import models

group = models.Group.objects.get(name='blogger')
users = group.user_set.all()
42
ответ дан Daniel Naab 24 November 2019 в 19:23
поделиться

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

, например,

518$ python manage.py shell

(InteractiveConsole)
>>> from django.contrib.auth.models import User, Group
>>> User.objects.filter(groups__name='monkeys')
[<User: cms>, <User: dewey>]
19
ответ дан cms 24 November 2019 в 19:23
поделиться

Группы являются many-many с Пользователями (Вы видите, ничто необычное, просто модели Django...), таким образом, ответ cms является правильным. Плюс это работает оба пути: имея группу, можно перечислить всех пользователей в нем путем осмотра user_set атрибут.

1
ответ дан zgoda 24 November 2019 в 19:23
поделиться

Попробуйте это:

User.objects.filter(groups__permissions = Permission.objects.get(codename='blogger'))
0
ответ дан ozgur 24 November 2019 в 19:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: