在我的 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'
这看起来应该按标题排序,所以我仍然不知道为什么订单会在列表末尾出现新编辑的项目。