Come posso aggiungere un filtro personalizzato all'amministratore di django (i filtri che appaiono sul lato destro di una dashboard del modello)? So che la sua facile comprendono un filtro basato su un campo di quel modello, ma che dire di un campo "calcolato" come questo:Filtro personalizzato in Django Admin su Django 1.3 o inferiore
class NewsItem(models.Model):
headline = models.CharField(max_length=4096, blank=False)
byline_1 = models.CharField(max_length=4096, blank=True)
dateline = models.DateTimeField(help_text=_("date/time that appears on article"))
body_copy = models.TextField(blank=False)
when_to_publish = models.DateTimeField(verbose_name="When to publish", blank=True, null=True)
# HOW CAN I HAVE "is_live" as part of the admin filter? It's a calculated state!!
def is_live(self):
if self.when_to_publish is not None:
if (self.when_to_publish < datetime.now()):
return """ <img alt="True" src="/media/img/admin/icon-yes.gif"/> """
else:
return """ <img alt="False" src="/media/img/admin/icon-no.gif"/> """
is_live.allow_tags = True
class NewsItemAdmin(admin.ModelAdmin):
form = NewsItemAdminForm
list_display = ('headline', 'id', 'is_live')
list_filter = ('is_live') # how can i make this work??
Altre persone già detto questa caratteristica è nel bagagliaio (1.4 dev). Altre informazioni: [note sulla versione] (https://code.djangoproject.com/browser/django/trunk/docs/releases/1.4.txt?rev=16144#L40) e [documentazione] (https: // code. djangoproject.com/browser/django/trunk/docs/ref/contrib/admin/index.txt#L604). – Paolo
Ecco un link migliore alla documentazione; estendere SimpleListFilter è la strada da percorrere qui. FilterSpecs non è aggiornato. https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter – fastmultiplication
Vedi [risposta matley] (https://stackoverflow.com/a/6355234/) sotto, con un link alla documentazione ufficiale. –