- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图从原始查询集创建一个查询集,但更改列表总是说 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.
这是我的尝试(是一个简单的查询,但它会变得更加复杂,我需要一个原始 SQL 查询):
class MyModelAdmin(admin.ModelAdmin):
def queryset(self, request):
qs = MyModel.objects.raw('SELECT field1, field2 FROM MyTable)
return qs
admin.site.register(MyModel, MyModelAdmin)
在 admin.py 中?
最佳答案
已经有一段时间了,从那时起版本似乎发生了很大变化,但是您曾经能够简单地将 qs 本身转换为字符串或 qs 中包含的查询属性,它会为您拼写出 sql。
例如sql = str(qs)
或 sql = str(qs.query)
话虽如此,django 会修改表名。可能不是 MyTable
您正在寻找,但是 appname_my_table
.浏览 django 核心以确切了解命名规范是什么,或者从 model_instance._meta.db_name
获取它。或类似的属性(property)。
更新:好吧,看来我误解了这个问题,您根本不想“打印”查询集来检查它生成的 sql,您需要 ModelAdmin 将 RawQuerySet 而不是常规 QuerySet 传递给它的 ChangeView。
简短回答:不,它不会那样工作。它们是两个非常不同的类。
看起来它们的行为相同,因为您可以迭代它们,并且当您这样做时,结果会包含正确的模型实例。然而,随着时间的推移,它缺少 ModelAdmin 的变更 View 所依赖的大量其他功能。我什至不确定它是否真的有经理。
想到的唯一选择是使用:
Model.objects.extra(...)
而不是 Model.objects.raw(...)
,以便它返回正确的 QuerySet。 __and__
和 __or__
,至少为它提供一个自定义管理器。我以前做过这件事,而且很有可能,但我保证要做很多工作,特别是如果您希望所有常见的管理魔法都能正常工作,请考虑过滤器规范、搜索、内联关系。预计会伤害您的大脑,或者学会在没有您喜爱的大多数管理员福利的情况下生活。 raw(...)
基本上导致与 django 的 ORM 完全分离,尽管乍一看它让您误以为情况并非如此(主要是因为它的迭代器返回正确的 Model 实例)。当然,您的 ModelAdmin 的 ChangeView 对如何处理它一无所知。
关于django - 从 RawQuerySet 返回 QuerySet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19836036/
我是 python 的新手,所以这很可能是我犯的一个愚蠢的错误。 我正在制作一个可以使用外部链接调用的 api。调用链接时,我的 Django 服务器出现以下错误:“'RawQuerySet' 对象没
有没有办法使用 Django 的内置分页对 rawqueryset 进行分页?当我将它转换到一个列表时,它会在我面前抛出一个错误...TypeError: expected string or Uni
嘿,我正在使用 django 1.2,我想知道如何计算原始查询集 (RawQuerySet) 中的行数。 传统的 .count() 方法不起作用。 这是我的问题 query = "SELECT *,
我试图从原始查询集创建一个查询集,但更改列表总是说 Something's wrong with your database installation. Make sure the appropria
我在 Django 查询中使用 raw() 和 annotate() 并且需要一些方法来测试它。 这是我的代码的样子(这被大大简化了) query = """SELECT tab
我面临着需要序列化 RawQuerySet 的问题。它没有值函数。我还为每个对象添加了一个小数点注释,这是一个字段的计数。 示例代码: cow_query = """SELECT cow.* (c
我在 Django 中使用原始 SQL 进行复杂查询以解决一些注释问题。实际查询有许多已转换为子查询的左连接,以解决 Django 中的一个主要错误。 https://code.djangoproje
我有 2 个 Django 模型,ModelA 和一个 ArrayField 用于存储大量主键值列表(可能超过 50k 个列表) class ModelA(models.Model): pk_
我在 Django 1.3 中遇到原始 sql 查询问题。当我使用 ORM 中的 select_related() 时,我在一个查询中获得了全部需要的数据。 activities = UserActi
我在 Postgres 中有一个相当大的表 (20M+),我正在尝试对其进行原始 Django 查询: tweets = TweetX.objects.raw("SELECT * from twitt
我的输入查询是 query = "select * from tab1 left join tab2 on tab2.patient_id =tab1.patient_id ,tab3 left jo
我有一个相当复杂的查询,它生成了一个 Django RawQuerySet .此特定查询返回的某些字段不属于 RawQuerySet 的模型的一部分。基于,所以我使用 .annotate(field_
是否可以以某种方式将 RawQuerySet 转换为 QuerySet 或以其他方式模拟 __and__ 和 __or__ 方法将 QuerySet 放到 RawQuerySet 上,以便我可以获得
我在 Django 中使用 RawQuerySet,我需要向它传递一些参数 (5)。我可以使用 MyModel.objects.raw(SQL, params) 调用构造函数。 SQL 很长并且不太相
我是一名优秀的程序员,十分优秀!