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
我之前也遇到过这个问题,它发生在数据库字段被设置为字符(Char / Varchar)而不是整数(Int)的时候。
你需要进入数据库,把字段类型改一下,这样才能确保你可以正确地进行排序和筛选。