2017-08-31 4 views
1

Dans mon application Django, dans l'admin, pour un de mes modèles, je laisse l'option filtrer par son champ 'create_date'. Django par défaut me donne quelques options (Aujourd'hui, 7 derniers jours, Ce mois, Cette année). Je veux simplement ajouter l'option pour choisir 'Yesterday' aussi. J'ai regardé d'autres questions de débordement de pile concernant le même problème, mais ils cherchaient tous la capacité de rechercher par une plage de dates, et je veux seulement l'option préchargée. Est-ce un moyen dans la classe admin qui configure ce modèle pour remplacer certaines de leurs fonctionnalités de filtrage?Ajouter le champ 'hier' au filtre de liste de date administrateur Django

classe Admin

class User_LikeAdmin(admin.ModelAdmin): 
    def fb_view_link(self, obj): 
     if len(obj.user_facebook_link) > 2: 
      return u"<a href='%s' target='_blank'>Facebook Page</a>" % obj.user_facebook_link 
     else: 
      return "" 

    fb_view_link.short_description = '' 
    fb_view_link.allow_tags = True 


    list_display = ('vehicle', 'user', 'fb_view_link', 'dealer', 'create_date') 
    list_filter = ('create_date', ('vehicle__dealer', custom_titled_filter('Dealer'))) 
    raw_id_fields = ('vehicle', 'user') 

    actions = [export_csv] 

    def dealer(self, obj): 
     return obj.vehicle.dealer 

Répondre

3

En option, vous pouvez utiliser la classe de filtre personnalisé comme mentionné dans le documentation

class User_LikeAdmin(admin.ModelAdmin): 
    list_filter = (('create_date', CustomDateFieldListFilter),) 

Vous pouvez étendre DateFieldListFilter

from django.contrib.admin.filters import DateFieldListFilter 

class CustomDateFieldListFilter(DateFieldListFilter): 
    # Your tweaks here 
+0

Impressionnant, tout ce que je cherchais, merci! – JBT

1

Utilisez le datetime et créer variable d'hier, et obtenir tous les documents de cette façon.

import datetime 
yesterday = datetime.date.today() - datetime.timedelta(days=1) 

data = Modelname.objects.filter(create_date=yesterday)