在Django查询集中,是否已经有一种方法可以根据id % 4 == 0
选择对象?
目前我找到的唯一解决方案是编写自定义转换,因为模数似乎在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文件。看起来是由于取模运算符导致的,因为我设法使用文档示例使自定义转换工作。
如何实现这一点?有什么想法吗?
%s
- Spc_555