Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 2自动完成_字段上的限制查询集_Django_Django Admin - Fatal编程技术网

Django 2自动完成_字段上的限制查询集

Django 2自动完成_字段上的限制查询集,django,django-admin,Django,Django Admin,很长一段时间以来,我们一直在覆盖ModelAdmin的formfield\u For\u foreignkey,以限制字段可以选择的查询集。以下是我的意思的简化版本: def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == "site": if not request.user.is_superuser: kwargs["queryse

很长一段时间以来,我们一直在覆盖ModelAdmin的
formfield\u For\u foreignkey
,以限制字段可以选择的查询集。以下是我的意思的简化版本:

def formfield_for_foreignkey(self, db_field, request, **kwargs):
    if db_field.name == "site":
        if not request.user.is_superuser:
            kwargs["queryset"] = request.user.site
但我最近将此字段添加到
autocomplete\u字段的定义中(以获取一些Select2肉汁)。结果是,我现在看不到作为非超级用户帐户的任何建议


是否有更正确的方法来限制查询集,或者这是Django中的一个简单错误?

这需要一个仍在开发中的补丁。您可以耐心等待,或者您可以使用monkey patch
AutocompleteJsonView。has_perm
,如下所示。我只是把它放在设置里了

如果您还停留在2.0.x上(正如我目前在Wagtail上所做的那样),您还需要确保您的ModelAdmins define a
具有查看权限

from django.contrib.admin.views.autocomplete import AutocompleteJsonView
def ac_has_perm(self, request, obj=None):
    return self.model_admin.has_view_permission(request, obj=obj)
AutocompleteJsonView.has_perm = ac_has_perm