【问题标题】:Limit queryset on Django 2 autocomplete_field在 Django 2 autocomplete_field 上限制查询集
【发布时间】:2018-08-21 09:49:34
【问题描述】:

长期以来,我们一直在覆盖 ModelAdmin 的 formfield_for_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_fields 定义中(以获得一些 Select2 肉汁)。结果是我现在看不到作为非超级用户帐户的建议。

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

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    这需要一个仍在开发中的补丁。您可以耐心等待,也可以像下面这样对AutocompleteJsonView.has_perm 进行猴子补丁。我只是将其卡在设置中。

    如果您还停留在 2.0.x 上(因为我目前 在 Wagtail 上握手),您还需要确保您的 ModelAdmins 定义一个 has_view_permission

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-11
      • 2012-03-31
      • 1970-01-01
      • 2011-09-23
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多