4
在django queryset中,是否有一種方法可以根據id % 4 == 0
選擇對象?在django queryset中模數?
到目前爲止,我發現的唯一解決方案是編寫自定義轉換,因爲modulo似乎在Postgresql中受支持,但是出現錯誤。
這裏是我的代碼:
from django.db.models import Lookup, Transform
from django.db.models.fields import Field, IntegerField, AutoField
class Modulo4(Transform):
lookup_name = 'modulo4'
def as_sql(self, compiler, connection):
lhs, params = compiler.compile(self.lhs)
return "%s %% 4" % lhs, params
AutoField.register_lookup(Modulo4)
foos = Foo.filter(id__modulo4=0)
我得到一個錯誤,當查詢集評估(與foos.count()
或其他):
IndexError: tuple index out of range
指的Django的文件。這似乎是由於我設法使自定義轉換與doc example一起工作而導致的。
有關如何實現這一點的任何想法?
不幸的是,我用django 1.7 :(:(應該指定它在問題中) – stellasia
@stellasia更新了我的答案,只有Django 1.7的可用方法 –
似乎不能使用%d參數,但我可以做到這一點沒有選擇。 非常感謝! – stellasia