與伯爵,F對象和整數Django的組合f出現在註釋
class Task(models.Model):
my_integer = models.IntegerField()
class User(models.Model):
task = models.ForeignKey("Task", related_name="users")
Task.objects.annotate(
sum= 1 + F('my_integer') + Count('users')
).filter(
sum= 10
).count()
OperationalError: (1054, "Unknown column 'bug_example_task.my_integer' in 'having clause'")
令人驚訝的註釋,當我遇到一個問題計數「在having子句未知列」它的工作原理,如果我改變的順序:
1 + F('my_integer') + Count('users')
到:
F('my_integer') + Count('users') + 1
但不幸的是我被鎖定在訂單(我舉了一個簡單的例子)。我在做實際的註釋是類似於:
(my_variable/F('my_integer'))%Count('users')
不能重新排列:(
它的查詢也可以工作:
- 沒有過濾器()
- 沒有計數()
- 通常在SQLite3上
我正在執行查詢的表是一個沉重的河馬,所以我不能做任何python級別的處理。我試着將它分成不同的註釋,使用Case/When來捕獲任何div 0錯誤,並將計算移動到filter(),但無濟於事。
我做錯了什麼?我應該打開一張票嗎?請幫我先生上網。
Django的:1.9.6 - - MySQL的:5.7.11 - - 的Python:2.7.10 - - OSX:10.11.4
難道可能是因爲您使用的是保留字「整數」作爲註釋和列名稱? – e4c5
整數不是python/django中的保留字。我使用的實際名稱是不同的,我只是用它作爲例子:P – Dean
https://dev.mysql.com/doc/refman/5.6/en/integer-types.html – e4c5