我有这个:
#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等。
应如何做到这一点?
答案 0 :(得分:0)
在将数据库字段设置为Char / Varchar而不是Int时,我遇到此问题。
您需要进入数据库并更改字段类型,以确保您可以正确排序和过滤。