custom - Django admin-ordenando list_filter
django admin search text (1)
Tengo ''versión'' en list_filter, y quiero que la última versión esté después del elemento de lista ''Todo''. En este caso, ¿cómo ordeno la lista descendente? (Todos, 3.6.99.108,3.6.99.107 ...)
Defina el orden predeterminado en la clase Meta
modelo:
class MyModel(models.Model):
# some model fields here
class Meta:
ordering = [''-version'',]
Si de alguna manera no cumple con su propósito, puede escribir su propio filtro de lista personalizado:
from django.utils.translation import ugettext_lazy as _
from django.contrib.admin import SimpleListFilter
class VersionFilter(SimpleListFilter):
title = _(''version'')
parameter_name = ''version''
def lookups(self, request, model_admin):
qs = model_admin.queryset(request)
return [(i, i) for i in qs.values_list(''version'', flat=True) /
.distinct().order_by(''-version'')]
def queryset(self, request, queryset):
if self.value():
return queryset.filter(version__exact=self.value())
class MyModel(ModelAdmin):
list_filter = (VersionFilter,)
Si obtiene el siguiente error AttributeError: object has no attribute ''queryset''
entonces probablemente esté usando Django 1.5+
use .get_queryset()
lugar, por ejemplo
qs = model_admin.get_queryset(request)