Django queryset在生产时没有正确排序

时间:2013-01-29 04:56:35

标签: django django-models sql-order-by webfaction

我有一个模特:

models.py

class Person(models.Model):
    name = models.CharField(...)

    def __unicode__(self):
        return u'%s' % self.name

class Entity(models.Model):
    client = models.ForeignKey(Person)

在我看来,我只想获取所有实体并按客户名称订购它们:

views.py

def all_entities(request):
    entities = Entity.objects.all().order_by('client')
    return render(request, 'template.html', {'entities': entities})

所以我的模板只打印所有实体。

template.html

<html>
{% for entity on entities %}
 {{ entity.client }}}
{% endfor %}
</html>

发生在我的开发PC中所有工作都很好,我得到一个有序客户名称列表,我无法理解的是,在我的webfaction.com上的生产服务器上,结果不按照我当地的字母顺序排序环境。

我也在shell上测试它,结果是一样的,不知怎的,order_by('client')在我的电脑上返回按字母顺序排序的列表,但在生产时没有按字母顺序排序。

注意:两个环境都有Postgres并使用相同的后端。

由于

1 个答案:

答案 0 :(得分:3)

好吧,我不会试图找出为什么它似乎适合你,但我不禁注意到ORM不会知道哪个字段按订单直接订购client

可能只是按PK排序。

entities = Entity.objects.all().order_by('client__name') 
#                                               ^^^^^^ specify sort field
#                    I am addicted to carets