Django管理员选择与默认模型排序不同的排序

时间:2012-01-18 23:06:16

标签: python django django-models django-admin

我有一个模型(Node),它在admin中按日期排序,因此首先显示最新的节点。这很好。

同一模型(Node)由另一个模型(Device)引用。编辑设备时,有一个节点列表(在HTML选择中),它也按日期排序。 我希望这个选择按名称排序,而不是按日期排序。

是否可以使用两种不同的排序方法,一种用于对象列表,另一种用于选择框?

感谢。

3 个答案:

答案 0 :(得分:6)

最简单的方法是覆盖ModelAdmin Device中的formfield_for_foreignkey方法,例如

def formfield_for_foreignkey(self, db_field, request, **kwargs):
    if db_field.name == 'node':
        kwargs['queryset'] = Node.objects.order_by('name')
    return super(DeviceAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)

(我在这里假设相当数量。希望很明显!)

同样有formfield_for_manytomany

答案 1 :(得分:2)

你有没有试过像:

class Node
        name = ...
        date = ...
        fields ....

        class Meta:
            order_with_respect_to='Device'
            ordering = ('Device', 'name')

答案 2 :(得分:0)

您可以为DeviceAdmin创建自定义表单,并为' Node'设置查询集参数。领域。

var options = {
  'contentType': 'application/json',
  'payload': JSON.stringify(payload)
};
UrlFetchApp.fetch('https://www.example.com', options);