10
votes

Django admin: Comment filtrer sur un champ entier pour une gamme de valeurs spécifique?

Comment créer un filtre dans Django admin pour afficher uniquement des enregistrements dans lesquels une valeur entière réside entre deux valeurs? Par exemple, si j'ai une personne modèle, qui a un attribut d'âge, et je veux seulement afficher les enregistrements de la personne où l'âge est compris entre 45 et 65 ans.


4 commentaires

mieux adapté à webmasters.stackexchange.com/questions


@Svistack je ne pense pas; Ceci est une question de programmation.


oui je sais mais meilleur sapin aux webmasters


Je suis complètement en désaccord, @svistack. C'est une question de programmation pure; Il n'a rien à voir avec la configuration du serveur, le SEO, le SMO ou les sensibilités de conception.


4 Réponses :


0
votes

I Vous voulez simplement une version filtrée de la vue de liste que vous accédez via un lien (par exemple dans la vue de liste), par exemple pour afficher uniquement les éléments associés d'un modèle, vous faites quelque chose comme ceci:

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'


0 commentaires

1
votes

Ce que vous cherchez est http://djangosnippets.org/snippets/587/ - le L'extrait est un peu vieux mais fonctionne bien après un changement mineur supplémentaire.

J'ai téléchargé la version patchée à https://gist.github.com/1009903


0 commentaires

0
votes

Basé sur une autre réponse pour une question connexe , j'ai appris qu'il existe un Officiellement documenté de manière documentée pour faire cela Depuis la version 1.4 . Il comprend même un exemple de filtrage par date.

Néanmoins, l'extrait de Réponse SORIN est également intéressant, car il ajoute simplement des paramètres de style Django à l'URL, qui est une solution différente de l'exemple de la documentation officielle.


0 commentaires

2
votes

Vous pouvez filtrer le champ Quelque comme celui-ci à l'aide de QuerySet () code> Fonction ... J'avais utilisé SimpleLelistFilter CODE>

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


0 commentaires