Django 2自动完成_字段上的限制查询集
很长一段时间以来,我们一直在覆盖ModelAdmin的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
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 patchAutocompleteJsonView。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