1

在我的 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'

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

4

0 回答 0