Django公司queryset.query查询在mysql控制台中运行的查询不会给出相同的结果

2024-05-16 16:31:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个模型:Project和ProjectTweet。你知道吗

Project与ProjectTweet(相关名称:“tweets”)有一个业务关系

这是我的查询集:

current_pledge = 1000000
projects = Project.objects.filter(state = "live").filter(pledged__gt=current_pledge).exclude(tweets__step__gte=current_pledge)

这里是

print projects.query


SELECT `ks_project`.* FROM `ks_project` WHERE (`ks_project`.`state` = live AND `ks_project`.`pledged` > 1000000.0 AND NOT (`ks_project`.`id` IN (SELECT U1.`project_id` AS Col1 FROM `ks_projecttweet` U1 WHERE U1.`step` >= 1000000)))

(我将长字段列表替换为ks_project.*仅用于后期可读性)

在django中求值的这个查询给我0个结果,但我应该有一个结果。你知道吗

实际上,当我在mysql控制台(同一个用户)中复制查询时,我得到了唯一的结果。。。(只需在字符串中添加引号,因为它们仅在评估查询时添加,如:Potential Django Bug In QuerySet.query?

你知道是什么导致了这种差异吗?你知道吗


Tags: projectlivestepcurrentfilterquerytweetsprojects
1条回答
网友
1楼 · 发布于 2024-05-16 16:31:00

我不知道我怎么会错过这个,但是我用.exclude(tweets__step__gte=current_pledge)比较的“step”字段

是CharField而不是FloatField。。。我已经改变了这一点,现在mysql控制台和queryset中的查询会给出相同的结果。但是,我希望有一个错误,而不是给我0的结果

cannot use gte with a charfield

或者类似的。你知道吗

相关问题 更多 >