2010-08-09 19 views
15

Esto es una continuación de este question. ¿Cómo se muestran las propiedades definidas en un modelo hijo en línea en el elemento primario? Para ilustrar esto, tengo este modelo:Django Admin: ¿cómo mostrar las propiedades definidas en el modelo en línea?

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 

La pregunta es: ¿Cómo puedo mostrar la 'edad' en una línea de usuario? Esto es lo que tengo:

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

He intentado algunas cosas como esta, entre ellos 'edad()', que define un captador 'get_age' para la línea, etc. Son el resultado de alguna versión de este error :

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

Respuesta

25

Agregue el campo a la tupla readonly_fields también.

Tenga en cuenta que esto solo funciona en Django 1.2+.

+0

Cuando agrego readonly_fields = ['age',] a la clase UserProfileInline como se muestra arriba, no obtengo un error pero no muestra nada en admin. ¿Me estoy perdiendo de algo? Estoy en Django 1.2, pero sigo aprendiendo el camino, gracias por tu ayuda. – Joe

+0

Eso es extraño, debería funcionar. ¿Estás seguro de que el servidor se ha reiniciado? –

+2

Lo he usado con éxito en Django 1.6. – dustinfarris

Cuestiones relacionadas