django F表达式生成的SQL查询
Posted
技术标签:
【中文标题】django F表达式生成的SQL查询【英文标题】:SQL query generated by django F expression 【发布时间】:2019-05-03 02:24:23 【问题描述】:有人知道django在使用F表达式时生成的实际查询吗?
对于文档中提到的示例,生成的查询将是什么:https://docs.djangoproject.com/en/2.1/ref/models/expressions/#f-expressions
from django.db.models import F
reporter = Reporters.objects.get(name='Tintin')
reporter.stories_filed = F('stories_filed') + 1
reporter.save()
我尝试查看使用以下命令生成的查询:
from django.db import connection
logging.info('[----- DEBUG -----] Query -1: %s', connection.queries[-1])
logging.info('[----- DEBUG -----] Query -2: %s', connection.queries[-2])
logging.info('[----- DEBUG -----] Query -3: %s', connection.queries[-3])
但我没有在我的模型/表格上看到任何查询。
有人知道怎么解决吗?
【问题讨论】:
【参考方案1】:查询应该在connection.queries
中 - 我刚刚测试发现它在那里。对于 mysql 和 Postgresql,发送到数据库的查询看起来像这样:
UPDATE "myapp_reporters"
SET "stories_filed" = ("myapp_reporters"."stories_filed" + 1)
WHERE "myapp_reporters"."id" = 123
【讨论】:
以上是关于django F表达式生成的SQL查询的主要内容,如果未能解决你的问题,请参考以下文章