Benutzerdefinierte Filter in Django Admin auf Django 1.3 oder niedriger

Wie kann ich einen benutzerdefinierten filter, um django-admin (die Filter angezeigt, die auf der rechten Seite des Modells dashboard)? Ich weiß, das ist ganz einfach, einen filter basierend auf einem Feld von diesem Modell, aber was ist ein "berechnetes" Feld wie diesem:

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??

InformationsquelleAutor der Frage sghael | 2009-06-14

Schreibe einen Kommentar