Django 查询集在生产环境中排序不正确

Pep*_*zza 1 django sql-order-by django-models webfaction

我有一个模型:

模型.py

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

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

class Entity(models.Model):
    client = models.ForeignKey(Person)
Run Code Online (Sandbox Code Playgroud)

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

视图.py

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

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

模板.html

<html>
{% for entity on entities %}
 {{ entity.client }}}
{% endfor %}
</html>
Run Code Online (Sandbox Code Playgroud)

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

我也在 shell 上测试了它,结果是相同的,不知何故 order_by('client') 在我的电脑上返回按字母顺序排序的列表,但在生产中不按字母顺序排序。

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

谢谢

Yuj*_*ita 5

好吧,我不会试图弄清楚为什么它看起来对你有用,但我不禁注意到 ORM 不知道给定一个直接的 order to order by 来排序哪个字段client

可能只是按PK排序。

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