I have this:
#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等。
如何实现?
result
数据库列实际上是一个IntegerField
吗?你的结果似乎指向了一个CharField
。如果在syncdb
后更改字段类型,它不会更新数据库为新类型。 - Sam Dolan