在Django Admin表单界面中对相关对象进行排序

时间:2010-05-09 15:19:43

标签: django django-admin

我希望对使用管理表单编辑对象时显示的相关对象进行排序。例如,我想采取以下对象:

class Person(models.Model):
    first_name = models.CharField( ... )
    last_name = models.CharField( ... )
    hero = models.ForeignKey( 'self', null=True, blank=True )

使用管理界面编辑名字,姓氏和英雄。我想按照姓氏,名字(升序)的下拉列表显示对象。我该怎么做?

上下文

  • 我正在使用Django v1.1。
  • 我首先在django admin docs寻求帮助,但未找到解决方案
  • 正如您在示例中所看到的,外键指向自身,但我希望它与指向不同的模型对象相同。
  • 奖励积分也可以过滤相关对象(例如〜只允许选择具有相同名字的英雄)

2 个答案:

答案 0 :(得分:3)

class Person(models.Model):
    first_name = models.CharField( ... )
    last_name = models.CharField( ... )
    hero = models.ForeignKey( 'self', null=True, blank=True )
    class Meta:
        ordering = ['-last_name', 'first_name']

http://docs.djangoproject.com/en/dev/ref/models/options/#ordering

注意:根据SVN文档,管理员只使用第一个排序选项,所以这是你最接近你想要的。

答案 1 :(得分:0)

我刚刚发现这个answer about django admin sorting。该解决方案允许多个排序和过滤。

对于提出重复的问题感到抱歉。奇怪的是,早期的问题在搜索时没有出现,但现在列在右边的相关问题中。无论如何,我想我会给它更多链接果汁以防人们最终来到这里。