1

私はモデルを持っています:

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)

私の見解では、すべてのエンティティを取得し、クライアントの名前で並べ替えたいだけです。

ビュー.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 の本番サーバーでは、ローカル環境のように結果がアルファベット順に並べられていないことです。

私もシェルでテストしましたが、結果は同じで、どういうわけか order_by('client') は私のPCではアルファベット順にソートされたリストを返しますが、本番環境ではアルファベット順ではありません。

注: どちらの環境にも Postgres があり、同じバックエンドを使用しています。

ありがとう

4

1 に答える 1

5

ええと、なぜそれがうまくいくように見えるのかを理解しようとするつもりはありませんが、 orm はorder to 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 に答える