Django模型的排序

0 投票
1 回答
947 浏览
提问于 2025-04-15 19:46

我在我的Django模型里设置了一个叫做 ordering='ordering_number' 的Meta属性,想着Django会用这个属性来比较实例。(ordering_number 是我模型里的一个整数字段。)

举个例子,如果我有一个实例 a,它的 ordering_number 是4,还有一个实例 b,它的 ordering_number 是7,我本来以为 a < b 会是 True,也就是 a 应该小于 b。可是我测试了一下,结果好像并不是这样。我搞不懂为什么 a < b 不是 True

有没有人知道?为什么Django不使用 ordering 来比较这些元素呢?

1 个回答

2

来自文档

对象的默认排序,用于获取对象列表时使用。

所以你比较不成功的原因是因为它们本身不是这样设计的。你需要定义__lt__()等方法来设定实例的排序规则。

撰写回答