У меня есть это:
# models.py
from django.db import models
class MyModel(models.Model):
name = models.CharField(max_length=30)
result = models.IntegerField()
# views.py
def MyView(request):
foo = MyModel.objects.order_by('result')
return render_to_response('foo.html', {'foo': foo})
И вместо целочисленных значений, отсортированных таким образом:
1, 3, 5, 24, 45
Я получаю:
1, 24, 3, 45, 5 (отсортировано по строкам)
И решение:
# views.py
def MyView(request):
foo = MyModel.objects.all()
foo = foo.extra(select={'result': 'CAST(result AS INTEGER)'}).extra(order_by = ['result'])
return render_to_response('foo.html', {'foo': foo})
Я хочу что-то вроде этого (фильтровать как целые числа, а не как строки):
# views.py
def MyView(request):
foo = MyModel.objects.all()
foo = MyModel.objects.filter(result__gt = 50)
И это возвращает, например: 6, 7, 9; например, не возвращается 100, 200 и т. Д.
Как это сделать?