【问题标题】:How to prevent Error: 403 in ModelAdmin.autocomplete_fields?如何防止错误:ModelAdmin.autocomplete_fields 中的 403?
【发布时间】:2021-09-29 23:34:57
【问题描述】:

ModelAdmin.autocomplete_fields 看起来很容易在 Django 管理中实现:

class UserAdmin(admin.ModelAdmin):
    autocomplete_fields = ['material']
admin.site.register(User, UserAdmin)    

class MaterialAdmin(admin.ModelAdmin):
        search_fields = ['name']
admin.site.register(Material, MaterialAdmin)

它正确呈现该字段(作为搜索字段而不是下拉菜单),但搜索字段显示“无法加载结果”并且 inspect 显示:

*/admin/autocomplete/403(禁止) jquery.js:9203

我假设从 Material 模型接收数据时存在 csrf 问题。我研究了从 csrf 中免除此请求的方法,但无法通过 ModelAdmin.autocomplete_fields 弄清楚如何做到这一点。

我也尝试使用 django-autocomplete-light,但无法正常工作。

【问题讨论】:

标签: python django django-autocomplete-light django-modeladmin modeladmin


【解决方案1】:

这是因为 DAL 和 Django 3.2 + 版本之间的冲突。如果你关闭 DAL 就可以解决这个问题。 DAL 的 js 重载了 Django 的,仅此而已。要了解更多信息,请点击以下链接 Dal's github issue

【讨论】:

    【解决方案2】:

    如果您实现自己的UserAdmin,请确保按照documentation 中的要求定义search_fields,或者使用Django 的UserAdmin 作为基类。

    另外,如果您刚刚升级了 Django 版本并且它停止工作,请清除缓存以加载正确的 javascript 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-19
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多