我有一个带Postgresql数据库的简单Django应用程序。数据库配置了nn_NO.UTF-8语言环境。
mything=>\l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- mything | postgres | UTF8 | nn_NO.UTF-8 | nn_NO.UTF-8 | =Tc/postgres + | | | | | postgres=CTc/postgres+ | | | | | me=CTc/postgres
我们说有一张表IEnumerable
。
我希望MyTable
根据en_US规则进行排序,而不是nn_NO。是否可以从Python / Django覆盖排序区域设置,还是必须重新创建整个数据库?
settings.py包含
MyTable.objects.order_by('name')
答案 0 :(得分:0)
RadosławGanczarek的评论指出正确答案:
from django.db.models import Func, F
name_en = Func(
'name',
function='en_US',
template='(%(expressions)s) COLLATE "%(function)s"')
sorted_things = MyTable.objects.order_by(name_en)
https://docs.djangoproject.com/en/1.9/ref/models/expressions/#func-expressions