【发布时间】:2015-05-18 15:38:07
【问题描述】:
是否已经有办法根据 django queryset 中的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 文件。这似乎是由于模数,因为我设法使自定义转换与doc example 一起工作。
关于如何实现这一目标的任何想法?
【问题讨论】:
标签: django