Запросить (получить) верхнюю границу RangeField в Django - PullRequest
0 голосов
/ 15 мая 2019

Я хочу получить верхнюю границу RangeField через набор запросов django.

Когда у вас есть доступ к объекту 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.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Что вы пытаетесь с этим делать?Вы можете использовать endswith

MyModel.objects.filter(size_range__endswith=some_value))
0 голосов
/ 15 мая 2019

Я нашел полу-решение:

from django.db.models.functions import Upper

MyModel.objects.all().annotate(
      upper=Upper('size_range')
  ).annotate(
      new_upper=F('upper') + 1
  )

Который кажется неуклюжим, но, по крайней мере, работает

Если кто знает лучше? Я уверен, что можно напрямую запросить необработанное значение.

...