You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django 2.2中admin.py自定义queryset方法无法执行的问题

问题原因

Django 1.9及后续版本已经将ModelAdmin的查询集钩子方法从queryset()重命名为get_queryset(),你当前运行的Django 2.2版本不再兼容旧方法名,因此你自定义的queryset()方法不会被框架调用,列表页默认返回全量文件数据,权限控制逻辑失效。

修复方案

将Tiedostot3Admin中的自定义查询方法名改为get_queryset,同时调整父类方法调用的名称即可,修改后代码如下:

class Tiedostot3Admin(admin.ModelAdmin):
    fields = ['otsikko', 'kuvaus', 'tiedosto']
    list_display = ('otsikko','paivitetty')
    inlines = [
      Liitet3Inline,
  ]
    def get_queryset(self, request):
        print("get_queryset, request.user", request.user)
        qs = super(Tiedostot3Admin, self).get_queryset(request)
        if request.user.is_superuser:
            return qs
        return qs.filter(owner=request.user)
        
    def save_model(self, request, obj, form, change):
        print("save_model, request.user", request.user)
        obj.owner = request.user
        obj.save()
可选优化建议

如果你使用的是Python 3运行环境,可以将模型中定义的__unicode__方法统一替换为__str__,符合Python 3的字符串处理规范,避免后续出现编码异常。

内容的提问来源于stack exchange,提问作者Jaana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 03:54:01