2010-10-30 11 views
6

Come faccio a creare un filtro in Django Admin per visualizzare solo i record in cui un valore intero si trova tra due valori? Ad esempio, se ho una persona modello, che ha un attributo età e voglio solo visualizzare i record Persona in cui l'età è compresa tra 45 e 65.Django Admin: Come faccio a filtrare su un campo intero per un intervallo di valori specifico

+0

meglio adatto a http://webmasters.stackexchange.com/questions – Svisstack

+3

@Svisstack Io non la penso così; questa è una domanda di programmazione. – FunLovinCoder

+0

sì, lo so, ma meglio che firmo per i webmaster – Svisstack

risposta

0

Io voglio semplicemente una versione filtrata della vista elenco, che tu accesso tramite un link (ad esempio nella visualizzazione elenco), ad esempio per visualizzare solo i relativi elementi di un modello, si fa qualcosa di simile:

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' 

questo vi porterà ad una visione lista per 'reciepts', ma solo quelli collegati alla fattura selezionata.

Se si desidera un filtro che consente di visualizzare nella barra laterale, si potrebbe try this snippet o this

1

È possibile filtrare il campo qualche cosa di simile utilizzando queryset() Funzione ... avevo usato SimpleListFilter

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

E creare dict in lookups() e restituirlo Secondo l'età

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