【问题标题】:Django: Ordering by the first value of a tupleDjango:按元组的第一个值排序
【发布时间】:2012-06-22 10:11:45
【问题描述】:

我有一个 7 元组的元组:

POSSIBILITIES = ((1, "Something"),
                 (2, "Something else"), ...)

现在我有一个IntegerFieldchoices 在一个具有上述可能性的模型中。

class Something(models.Model):

    class Meta:
        ordering = "...?"

    something = models.IntegerField(choices=POSSIBILITIES)

我希望数据库中的条目默认按每个元组中的整数排序。如何指定?

【问题讨论】:

    标签: django metadata


    【解决方案1】:

    这应该可以解决问题:

    class Meta:
        ordering = ('something',)
    

    最后一个逗号很重要,它是必需的。

    【讨论】:

    • 对于任何阅读本文并想知道逗号的人,这就是您在 Python 中编写 1 元组的方式。
    • Python 使用尾随逗号来区分 1 元组和带括号的表达式是一种 hack。避免被此问题困扰的一种方法是使用列表而不是元组。 (例如“ordering = ['something']”)我怀疑有任何显着的性能影响,Django 不在乎,它只是想要一个可迭代的。如果管理员编辑页面有一个复杂的字段表达式,这个 1 元组的障碍会变得特别烦人。
    【解决方案2】:

    ordering = ('something',) 应该可以工作。整数值是 something 在数据库中实际存储的值,因此默认情况下它们将按整数排序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-21
      • 1970-01-01
      • 2018-06-07
      • 1970-01-01
      • 2022-06-28
      相关资源
      最近更新 更多