Pep*_*zza 1 django sql-order-by django-models webfaction
我有一个模型:
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)
在我看来,我只想获取所有实体并按客户名称对它们进行排序:
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>
{% for entity on entities %}
{{ entity.client }}}
{% endfor %}
</html>
Run Code Online (Sandbox Code Playgroud)
发生的是,在我的开发 PC 中,一切都运行得很好,我得到了一个有序的客户端名称列表,但我无法理解的是,在 webfaction.com 上的生产服务器上,结果并不是像我的本地环境中那样按字母顺序排序。
我也在 shell 上测试了它,结果是相同的,不知何故 order_by('client') 在我的电脑上返回按字母顺序排序的列表,但在生产中不按字母顺序排序。
注意:两个环境都有 Postgres 并使用相同的后端。
谢谢
好吧,我不会试图弄清楚为什么它看起来对你有用,但我不禁注意到 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)