2010-08-09 4 views
15

Dies ist ein Follow-up zu diesem question. Wie zeige ich Eigenschaften an, die für ein untergeordnetes Modell in einem inline auf dem übergeordneten Modell definiert sind? Zur Veranschaulichung: Ich habe dieses Modell:Django Admin: wie in einem Inline-Modell definierte Eigenschaften angezeigt werden?

class UserProfile(models.Model): 
    user = models.ForeignKey(User, unique=True, primary_key=True, related_name='profile') 
    ... 
    @property 
    def age(self): 
     if self.birthday is None: 
      return None 

     td = datetime.date.today() - self.birthday 
     return td.days/365 

Frage ist: Wie kann ich ‚Alter‘ in einer Inline-auf-Nutzer? Das ist, was ich habe:

class UserProfileInline(admin.StackedInline): 
    model = UserProfile 
    fk_name = 'user' 
    max_num = 1 
    fieldsets = [ 
     ('Demographics', {'fields': ['birthday', 'age']}), 
    ] 

ich ein paar Dinge wie diese versucht haben, darunter ‚Alter()‘, eine ‚get_age‘ Getter für die Inline-Definition usw. Sie in irgendeiner Version dieses Fehlers führen :

ImproperlyConfigured: 'UserProfileInline.fieldsets[1][1]['fields']' refers to field 'age' that is missing from the form. 

Antwort

25

als auch das Feld des readonly_fields Tupel hinzufügen.

Beachten Sie, dass dies nur in Django 1.2+ funktioniert.

+0

Wenn ich readonly_fields = ['age',] zur Klasse UserProfileInline wie oben gezeigt hinzufüge, erhalte ich keinen Fehler, aber es zeigt nichts im Admin an. Fehle ich etwas? Ich bin auf Django 1.2, lerne aber immer noch herum - danke für deine Hilfe. – Joe

+0

Das ist seltsam - es sollte funktionieren. Sind Sie sicher, dass der Server neu gestartet wurde? –

+2

Ich habe das erfolgreich in Django 1.6 verwendet. – dustinfarris

Verwandte Themen