ORM订购与模型“Meta”排序 - Django 1.11

时间:2018-04-27 14:29:13

标签: python django

小问题 - 什么是订购商品的更好方式:
1)


export PATH="$PATH:$HOME/.cabal/bin/"

2)class Table(models.Model): ... class Meta: ordering = ['user']

我认为第二个更好,因为首先总会返回有序的查询集,如果有时我们不需要订单 - 它需要额外的时间吗?有没有其他理由使用1种方法,每次都有“不写”Table.objects.all().order_by("user")的便利?

2 个答案:

答案 0 :(得分:2)

你是对的,如果不需要,Meta Ordering会产生额外的时间。额外开销的数量可能因指定的顺序而异。

这在以下文档中有描述:

https://docs.djangoproject.com/en/1.11/ref/models/options/#ordering

鉴于此,它成为一种设计选择。如果您始终需要Model实例具有相同的顺序,例如按字母顺序排列的待售产品名称列表,那么您可能需要Meta Ordering。如果您正在以各种不同的方式处理Model实例,这些方法需要不同的排序/过滤,那么您可能不希望产生Meta Ordering的开销。

答案 1 :(得分:2)

在基于类的视图中使用模型时,使用第一个选项有时很重要,因为它可能是作为ForeignKey传递的模型。在这种情况下,如果您没有在ordering中添加Meta,则无法在模板中引用它。