2010-10-30 19 views
6

¿Cómo creo un filtro en Django Admin para mostrar solo los registros donde un valor entero se encuentra entre dos valores? Por ejemplo, si tengo un Persona modelo, que tiene un atributo de edad, y solo quiero mostrar los registros Persona donde la edad está entre 45 y 65.Administrador de Django: ¿Cómo puedo filtrar en un campo entero para un rango específico de valores?

+0

mejor encaja en http://webmasters.stackexchange.com/questions – Svisstack

+3

@Svisstack No lo creo; esta es una pregunta de programación – FunLovinCoder

+0

Sí, lo sé, pero mejor abeto a los webmasters – Svisstack

Respuesta

0

Simplemente desea una versión filtrada de la vista de lista, que acceso a través de un enlace (por ejemplo, en la vista de lista), por ejemplo, para ver sólo los elementos relacionados de un modelo, se hace algo como esto:

def admin_view_receipts(self, object): 
    url = urlresolvers.reverse('admin:invoice_%s_changelist'%'receipt') 
    params = urllib.urlencode({'invoice__id__exact': object.id}) 
    return '<a href="%s?%s">Receipts</a>' % (url, params) 
admin_view_receipts.allow_tags = True 
admin_view_receipts.short_description = 'Receipts' 

esto le llevará a una vista de lista de 'Reciepts', pero solo aquellos vinculados a la Factura seleccionada.

Si desea un filtro que aparece en la barra lateral, usted podría try this snippet o this

1

puede filtrar el campo de lo que algunos como esto mediante el uso de funciones queryset() ... Me habían utilizado SimpleListFilter

def queryset(self, request, queryset): 
     filt_age = request.GET.get('parameter_name') 
     return queryset.filter(
        age__range=self.age_dict[filt_age] 
       ) 

Y crear dict en lookups() y devolverlo De acuerdo con la edad

def lookups(self, request, model_admin): 
    return [ 
     (1, '5-21'), 
     (2, '22-35'), 
     (3, '35-60') 
    ] 
Cuestiones relacionadas