python - 在django中查询(获取)RangeField的上限
问题描述
我想通过 django 查询集获取 RangeField 的上限。
当您可以访问 python 对象时,就my_model.size_range.upper
可以了。不在查询引擎内部,不使用F
, When
, Case
...
class MyModel(models.Model):
size_range = IntergerRangeField()
MyModel.objects.all().annotate(new_upper=F('size_range__upper') + 1)
FieldError: Unsupported lookup 'upper' for IntegerRangeField or join on the field not permitted.
任何想法 ?
解决方案
我找到了一个半解决方案:
from django.db.models.functions import Upper
MyModel.objects.all().annotate(
upper=Upper('size_range')
).annotate(
new_upper=F('upper') + 1
)
感觉很笨拙,但至少它很有效
如果有人知道更好?我确信可以直接查询原始值。