2017-08-31 5 views
1

In meiner Django-Anwendung, in der Admin, für eines meiner Modelle, erlaube ich die Option nach seinem Feld 'create_date' zu filtern. Django gibt mir standardmäßig einige Optionen (Heute, Letzte 7 Tage, Dieser Monat, Dieses Jahr). Ich möchte einfach die Option "Gestern" hinzufügen. Ich habe mir andere Stack-Überlauffragen zum gleichen Problem angeschaut, aber alle haben nach der Möglichkeit gesucht, nach einem Datumsbereich zu suchen, und ich möchte nur die eine vorinstallierte Option haben. Ist ein Weg in der Admin-Klasse, die dieses Modell konfiguriert, um einige ihrer Filterfunktionen zu überschreiben?Hinzufügen 'gestern' Feld zu Django Admin-Datum Listenfilter

Admin Klasse

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 

Antwort

3

Als Option können Sie benutzerdefinierte Filter-Klasse verwenden, wie in der documentation

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

Sie DateFieldListFilter

from django.contrib.admin.filters import DateFieldListFilter 

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

Ehrfürchtig erweitern können erwähnt, genau das, was ich suchte, danke! – JBT

1

Verwenden Sie die Datetime, und gestern Variable erstellen, und dann werden alle Datensätze auf diese Weise erhalten.

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

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