在mysql控制台中运行的Django queryset.query和查询并​​没有给出相同的结果

时间:2016-06-09 17:00:19

标签: python mysql django django-queryset

我有2个模型:Project和ProjectTweet。

Project OneToMany与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控制台(同一用户)中复制查询时,我得到了我独特的结果......(只是将字符串添加到字符串中,因为只有在评估查询时才会添加它们,例如:{ {3}})

对导致这种差异的原因有什么想法?

1 个答案:

答案 0 :(得分:0)

我不知道我怎么会错过这个但是我用“{1}}

进行比较的”步骤“字段

是CharField而不是FloatField ...我已经改变了,现在mysql控制台和queryset中的查询给了我相同的结果。但是我会喜欢错误,而不是给我0结果

  

不能将gte与charfield一起使用

或类似的东西。