用 raw() 覆盖 Django Admin get_queryset 导致 DatabaseError

Overriding Django Admin get_queryset with raw() results in DatabaseError

为了加快我的管理页面的速度,我决定用原始查询覆盖我的 get_queryset(),但结果是:

Database error: Something’s wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user.

我是否遗漏了某些步骤?我已经确认该查询在 PSQL 中有效,所以我看不出出了什么问题。我已经尝试将其缩减为以下内容,但仍然出错。

def get_queryset(self, request):
    return MyObject.objects.raw('SELECT * FROM myapp_myobject')

问题是 raw return 不是 QuerySet instance but a RawQuerySet 实现了迭代器协议和表示但没有 Django 视图在引擎盖。

我建议使用 extra 代替,或者仅使用原始查询中的 select ID 列,然后点击另一个 MyObject.objects.filter(id__in=your_ids_list_from_raw)