在我的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 admin中使用“排序列”箭头时,它按照上次更改的顺序列出故事,并在该排序中按字母顺序排列。我需要按照字母顺序首先按照标题排序故事。为什么它最近在列表末尾放置了更改的条目?
我可能误解了一些关于SQLite的东西 - 即使我进入数据库管理器并调用SELECT * FROM table_name ORDER BY LOWER(title)
,订单仍然是先更新,然后按字母顺序排在其中。
编辑 SQL Django正在调用如下:
'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'
这看起来应该按标题排序,所以我仍然不知道为什么订单会在列表末尾出现新编辑的项目。