2012-08-13 11 views
12

me gustaría mostrar nombre de usuario del modelo en la interfaz de administración de Django, pero no muy seguro de cómo hacerlo ..Viendo el model's__unicode__ de administración de Django

The models.py: 

    class Adult(models.Model):  
     user = models.OneToOneField(User) 
     fullname = models.CharField(max_length=100, 
            blank=True) 
     def __unicode__(self): 
      return self.user.username 

Admin.py: 

    class AdultAdmin(admin.ModelAdmin): 
     list_display = ('??', 'Student_Name',) 
     search_fields = ['??',] 

    admin.site.register(Adult, AdultAdmin) 

lo que debe ir dentro del ?? encima ? Me gustaría mostrar el unicode o el nombre de usuario.usuario.usuario? ¿Cómo lo hago? Necesitará un poco de orientación ...

+0

Añadir '__unicode__', y' Student_Name' no es parte de ese modelo; a menos que no lo hayas incluido. –

Respuesta

29

Desde el list_display documentation hay cuatro cosas que se pueden agregar No:

  1. Un campo
  2. algún método (una opción de rescate) que acepta una variable que es la instancia para la que la fila se muestra.
  3. Una cadena que es el nombre de un método o atributo definido en la clase de modelo.
  4. Una cadena que es el nombre de un método que se define en ModelAdmin.

Para su caso necesitamos # 3 para list_display.

Para search_fields es más fácil ya que puede usar la notación follow (__) para realizar búsquedas.

Al final nos encontramos con esto:

class AdultAdmin(admin.ModelAdmin): 
    list_display = ('__unicode__', 'Student_Name',) 
    search_fields = ['user__username'] 
+0

una pregunta: ¿deben usarse __unicode__ y user_username juntos al mismo tiempo para que sean efectivos? – lakesh

+0

Depende de lo que quiera hacer, porque una es para buscar y la otra controla qué atributos se muestran en la vista de lista. –

+0

también se puede agregar después de --unicode-- declaración del método: --unicode -. Short_description = 'nombre del estudiante' – madzohan

Cuestiones relacionadas