1

我有一个模型:

模型.py

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

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

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

在我看来,我只想获取所有实体并按客户名称对它们进行排序:

视图.py

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

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

模板.html

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

发生的情况是,在我的开发 PC 中一切正常,我得到了一个有序的客户端名称列表,我无法理解的是,在我的 webfaction.com 上的生产服务器上,结果不像在我的本地环境中那样按字母顺序排列。

我也在外壳上对其进行了测试,结果是一样的,不知何故 order_by('client') 在我的 PC 上返回按字母顺序排序的列表,但在生产中没有按字母顺序排序。

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

谢谢

4

1 回答 1

5

好吧,我不会试图弄清楚为什么它似乎对你有用,但我不禁注意到,如果直接 order to order by ,ORM 不会知道要 order by哪个字段client

可能只是按PK排序。

entities = Entity.objects.all().order_by('client__name') 
#                                               ^^^^^^ specify sort field
#                    I am addicted to carets
于 2013-01-29T05:57:01.433 回答