我有一个模特:
class Person(models.Model):
name = models.CharField(...)
def __unicode__(self):
return u'%s' % self.name
class Entity(models.Model):
client = models.ForeignKey(Person)
在我看来,我只想获取所有实体并按客户名称订购它们:
def all_entities(request):
entities = Entity.objects.all().order_by('client')
return render(request, 'template.html', {'entities': entities})
所以我的模板只打印所有实体。
<html>
{% for entity on entities %}
{{ entity.client }}}
{% endfor %}
</html>
发生在我的开发PC中所有工作都很好,我得到一个有序客户名称列表,我无法理解的是,在我的webfaction.com上的生产服务器上,结果不按照我当地的字母顺序排序环境。
我也在shell上测试它,结果是一样的,不知怎的,order_by('client')在我的电脑上返回按字母顺序排序的列表,但在生产时没有按字母顺序排序。
注意:两个环境都有Postgres并使用相同的后端。
由于
答案 0 :(得分:3)
好吧,我不会试图找出为什么它似乎适合你,但我不禁注意到ORM不会知道哪个字段按订单直接订购client
。
可能只是按PK排序。
entities = Entity.objects.all().order_by('client__name')
# ^^^^^^ specify sort field
# I am addicted to carets