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
risposta
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
Quello che state cercando è http://djangosnippets.org/snippets/587/ - il frammento è un pò vecchio, ma funziona bene dopo una piccola modifica aggiuntiva.
ho caricato la versione patchata a https://gist.github.com/1009903
Sulla base di another answer for a related question, ho imparato che c'è un officially documented way per farlo since version 1.4. Include anche un esempio di filtraggio per data.
Ancora, il frammento nello sorin answer è anche interessante, perché aggiunge solo parametri in stile django all'URL, che è una soluzione diversa rispetto all'esempio di documentazione ufficiale.
È 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')
]
meglio adatto a http://webmasters.stackexchange.com/questions – Svisstack
@Svisstack Io non la penso così; questa è una domanda di programmazione. – FunLovinCoder
sì, lo so, ma meglio che firmo per i webmaster – Svisstack