Django ModelAdmin & callables

Django, Flask, Bottle, WSGI, CGI…
Antworten
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Hallo,

ich versuche mich derzeit an Django, was auch ganz gut klappt, aber ich kriege keine callables zum laufen.
Aufgerufen werden sie scheinbar (exception wenn was falsches drin steht), allerdings taucht das ergebnis nicht auf in der listview.
Statt einem Wert zeigt Django (leer) in der Alter spalte (echte Spalten sind gefüllt).
Wenigstens die Spalte heisst richtig, aber der Inhalt kommt nicht an.

Ich habe so ziemlich alle kombinationen probier, die callable in Admin.py, in models, etc.
Laut Beschreibung sollte das ja funktionieren! ( https://docs.djangoproject.com/en/dev/r ... st_display )
Wer hat einen Tip woran es liegt?

Admin.py

Code: Alles auswählen

class MemberAdmin(admin.ModelAdmin):
    fields = (
        'member_id',
        ('first_name', 'last_name', 'birth_date'),
        )

    list_display = ('first_name', 'last_name', 'birth_date', 'age')

    def age(self, obj):
        """ return the current age in years """
        today = datetime.date.today()
        delta = self.birthdate - today
        #return str(int(delta.days / 365.25))
        return "12"

    age.short_description = 'Alter'
    age.admin_order_field = 'birth_date'
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Keiner eine idee woran's liegt?

:K :K :K
Benutzeravatar
Whitie
User
Beiträge: 216
Registriert: Sonntag 4. Juni 2006, 12:39
Wohnort: Schulzendorf

Du musst auf obj.birthdate statt self.birthdate zugreifen. Wahrscheinlich erhälst du mit dem jetzigen Code einen AttributeError. Willst du nicht vielleicht auch today - obj.birthdate rechnen? Dann bekommst du das Alter als positive Zahl.

Gruß Whitie
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Danke, für den Tip.

Es gibt eben keine Exception, die wird scheinbar irgendwo geschluckt.

Allerdings kommt in dem unten probierten test schonmal 17 im GUI an.
Ohne die fake-If True kommt wieder leer an ...
hab das ganze auch mal in ner shell probiert, sollte gehen.

Edit: Ja, jegliche exceptions werden einfach geschluckt und dann wird der wert mit (empty) ersetzt.
Jetzt gehts.

:)
Antworten