【问题标题】:Why .query() function not working on Django ORM query?为什么 .query() 函数不适用于 Django ORM 查询?
【发布时间】:2019-10-30 07:58:24
【问题描述】:

据我所知,使用 .query.__str__() ,我们可以从 Django ORM 查询中获取 sql 等效查询。

例如:Employees.objects.filter(id = int(id)).query.__str__()

上面的代码运行良好,我能够得到 sql 等效查询 但是当我在下面的查询中使用相同的时,我会收到如下错误。

Employees.objects.filter(id = int(id)).first().query.__str__()
AttributeError: 'Employees' object has no attribute 'query'

为什么现在我收到错误,有什么建议吗?

【问题讨论】:

    标签: python django database


    【解决方案1】:

    .first() [Django-doc] 确实返回QuerySet,它返回一个模型对象。查询被急切地评估。

    您可以检查 Django 使用的最后一个查询:

    from django.db import connection
    print(connection.queries[-1:])

    话虽如此,本质上some_queryset.first() 通常与some_queryset 是相同的查询,只是它会限制查询集。

    注意:请不要使用.__str__,您可以使用str(my_queryset.query),或者只使用print(my_queryset.query)

    【讨论】:

    • 谢谢!以上解释清除了我的疑虑并解决了我的问题!
    猜你喜欢
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多