Django-admin按多个字段排序

Imr*_*zad 8 django django-admin

如何通过django-admin中的多个字段进行排序?

谢谢

小智 12

试试这个:

在模型中设置排序Meta:

class Meta:
    ordering = ["some_field", "other_field"]
Run Code Online (Sandbox Code Playgroud)

并在admin.py以下位置添加此类:

from django.contrib.admin.views.main import ChangeList

class SpecialOrderingChangeList(ChangeList): 
    """ 
     Django 1.3 ordering problem workaround 
     from 1.4 it's enough to use `ordering` variable 
    """ 
    def get_query_set(self): 
        queryset = super(SpecialOrderingChangeList, self).get_query_set() 
        return queryset.order_by(*self.model._meta.ordering) 
Run Code Online (Sandbox Code Playgroud)

在你的.中添加此方法 admin.ModelAdmin

def get_changelist(self, request, **kwargs): 
    return SpecialOrderingChangeList
Run Code Online (Sandbox Code Playgroud)

来源:https://groups.google.com/forum/?fromgroups#!topic/django-users/PvjClVVgD -s


sec*_*ond 3

直到 django 1.4(当前处于 alpha 版本)为止,django 管理员仅按Meta ordering. 您可以通过覆盖查询集来解决此问题:

class MyAdmin(admin.ModelAdmin):
    def queryset(self, request):
        qs = super(MyAdmin, self).queryset(request)
        qs = qs.order_by('last_name', 'first_name')
        return qs 
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,但是我尝试了你的代码,但它没有生效,我使用的是 Django 1.3。 (3认同)