私のDjangoアプリで次のモデルを使用します。
class Story(models.Model):
#1:1 Fields
title = models.CharField(max_length=100, unique=True)
tagline = models.TextField(blank=True, null=True)
contents = models.TextField()
updated = models.DateTimeField(auto_now_add=True)
slug = models.SlugField(unique=True)
full_length_book = models.BooleanField(default=False)
publish_now = models.BooleanField(default=False)
date_added = models.DateTimeField('date added to archive')
def __unicode__(self):
return self.title
class Meta:
verbose_name_plural = "Stories"
ordering = ['title']
このモデルのデータをクエリして使用するビューがいくつかあります.order_by('title')
。次に例を示します。
newlist = Story.objects.filter(tag=tag, publish_now=True).order_by('title')
問題:クエリ結果で、ストーリーグループのdjango管理者で「列の並べ替え」矢印を使用すると、最後に変更された順序でストーリーが一覧表示され、その順序でアルファベット順に表示されます。最初に、タイトルだけでアルファベット順に並べられたストーリーが必要です。最近変更されたエントリをリストの最後に配置するのはなぜですか?
私はSQLiteについて何か誤解しているかもしれません-データベースマネージャーに入って呼び出しSELECT * FROM table_name ORDER BY LOWER(title)
たとしても、順序は最初に更新され、次にアルファベット順に更新されます。
編集Djangoが呼び出しているSQLは次のとおりです。
'SELECT "app_story"."id", "app_story"."title", "app_story"."tagline", "app_story"."contents", "app_story"."updated", "app_story"."slug", "app_story"."full_length_book", "app_story"."publish_now", "app_story","date_added" FROM "app_story" ORDER BY "app_story"."title" ASC'
これはタイトル順に並べる必要があるように見えるので、リストの最後に新しく編集されたアイテムが注文に含まれる理由はまだわかりません。