Django:order_by和过滤整数字段

时间:2011-06-25 22:24:27

标签: python django

我有这个:

#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等。

应如何做到这一点?

1 个答案:

答案 0 :(得分:0)

在将数据库字段设置为Char / Varchar而不是Int时,我遇到此问题。

您需要进入数据库并更改字段类型,以确保您可以正确排序和过滤。