2
我有一個在Django開發環境下訪問數據庫的模型。我希望做的事:查詢中的Django問題
Friends.objects.filter(pk__contains=str)[:20].filter(invite_id=77)
但我得到這個錯誤:
File "<console>", line 1, in <module>
File "D:\INSTALL\Python\lib\site-packages\django\db\models\query.py", line 691
, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "D:\INSTALL\Python\lib\site-packages\django\db\models\query.py", line 703
, in _filter_or_exclude
"Cannot filter a query once a slice has been taken."
查詢一次後,我已經有20個項目。爲什麼我不能通過查詢再次獲取物品?
注意:我瞭解錯誤,但我想再次查詢。這肯定不是一個好主意,因爲我得到了錯誤。誰知道更好的方法?
這有不同的效果,我怎麼解釋原代碼。這將找到前20個匹配對象,而不是前20個對象中的所有匹配項。我不確定哪些是需要的。 – Holloway 2015-01-21 11:32:20
確實如此,但是在限制結果後實施過濾器相當複雜。一些數據庫可以通過子查詢訪問,但不能訪問MySQL。唯一的數據庫獨立選項是Python端的實現,在I/O和CPU端會很昂貴。 – 2015-01-21 11:47:46
@KlausD .:由於它只有20條記錄,因此實際上不需要讓數據庫完成這項工作。 '[f for Friends.objexts.all()[:20]如果f.invite_id == 77]'訣竅,在一個不太可能的情況下,這是OP真正想要的。 – 2015-01-21 12:05:10