Django 模型中的有序列表

Posted

技术标签:

【中文标题】Django 模型中的有序列表【英文标题】:Ordered list in Django Model 【发布时间】:2015-02-24 10:51:49 【问题描述】:

我有一个 Django 项目,我希望模型包含另一个模型的有序对象列表。如果我理解正确,列表通常使用从包含对象指向包含对象的外键来完成。但是如果我这样做,我会确保保持对象的顺序(我在管理面板中添加它们的顺序)吗?是什么决定了它们的内部顺序?

另外,如果具有外键的元素是无序的,我将如何在 Django 模型中创建有序列表?

【问题讨论】:

第一次只问 1 个问题 它们将按照您将它们添加到新模型表中的顺序出现,尽管它们在原始表中具有顺序。因此,新表将按照您创建它们的顺序包含行,其中包含对另一个表中另一行的引用。 我通过改编这个 Django sn-p 做了类似的事情:djangosnippets.org/snippets/998 【参考方案1】:

您可以在模型的 Meta 选项中指定要排序的字段。

见https://docs.djangoproject.com/en/dev/ref/models/options/#django.db.models.Options.ordering

如果您需要在不同查询中按不同字段排序,您可以覆盖单个查询集上的 order_by。

见https://docs.djangoproject.com/en/dev/ref/models/querysets/#order-by

如果您想根据时间戳对它们进行排序(例如,当它们被添加到您的数据库中时),那么您可以在 Meta 选项中指定它。

【讨论】:

【参考方案2】:

如果需要,您可以使用 auto_now_add 属性添加一个自动存储创建对象时的日期时间的字段,如下例所示:

creation_date = models.DateTimeField('Date', auto_now_add=True)

然后,您可以通过此字段在数据库中排序,带有 Meta 属性:

    class Meta:
        ordering = ('creation_date',)

【讨论】:

以上是关于Django 模型中的有序列表的主要内容,如果未能解决你的问题,请参考以下文章

如何创建 Django 有序列表

2019-01-23 LaTeX中的有序列表和无序列表

redis有序集合性能 列表集合有序集合

redis有序集合性能 列表集合有序集合

UITextView中的HTML有序列表

字典转化为有序列表