django - 使用 raw() 覆盖 Django Admin get_queryset 会导致 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
返回的不是QuerySet实例,而是一个RawQuerySet,它确实实现了迭代器协议和表示,但没有 Django 视图在后台使用的一堆其他方法。
我建议使用extra代替,或者只从原始查询中选择 ID 列,然后点击另一个类似MyObject.objects.filter(id__in=your_ids_list_from_raw)
推荐阅读
- swift - Swift:使用 WKWebView 的 createPdf 创建 pdf
- php - 使用 PHP 数组准备表列
- angular - 按钮上的 routerLink 没有将我路由到该页面
- r - 多列的双向交叉表
- r - R:将多个特定变量转换为因子
- flutter - 连接到 Firebase 时 Flutter 中的地图出现问题
- mysql - 如何将数据插入到连接到跟踪两个表的“中间表”的表中?
- apache-spark - 从 Spark Structured Streaming 中的 Kafka 消息中读取换行分隔的 json
- javascript - 试图将 JSX 作为道具传递
- reactjs - Reactjs Material-ui 隐藏 appBar 粘滞或静态