Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

130
Vistas
Admin y Meta no ven los campos de las clases abstractas principales

Yo uso Django 1.10. Tengo la siguiente estructura modelo:

 class GenericPage(models.Model): """Abstract page, other pages inherit from it.""" book = models.ForeignKey('Book', on_delete=models.CASCADE) class Meta: abstract = True class GenericColorPage(models.Model): """Abstract page that is sketchable and colorable, other pages inherit from it.""" sketched = models.BooleanField(default=False) colored = models.BooleanField(default=False) class Meta: abstract = True class GenericBookPage(GenericColorPage): """A normal book page, with a number. Needs to be storyboarded and edited.""" ### #various additional fields ### class Meta: # unique_together = (('page_number', 'book'),) # impedes movement of pages ordering = ('-book', '-page_number',) abstract = True objects = BookPageManager() # the manager for book pages class BookPage(GenericBookPage): """Just a regular book page with text (that needs to be proofread)""" proofread = models.BooleanField(default=False)

Además, un extracto de Admin:

 class BookPageAdmin(admin.ModelAdmin): # fields NOT to show in Edit Page. list_display = ('__str__', 'page_name', 'sketched', 'colored', 'edited', 'proofread',) list_filter = ('book',) readonly_fields = ('page_number',) # valid page number is assigned via overridden save() in model actions = ['delete_selected',]

Intenté hacer ./manage.py makemigrations pero arroja los siguientes errores:

 <class 'progress.admin.BookPageAdmin'>: (admin.E116) The value of 'list_filter[0]' refers to 'book', which does not refer to a Field. progress.BookPage: (models.E015) 'ordering' refers to the non-existent field 'book'.

En el pasado, cuando no usaba los resúmenes y simplemente ponía todo en el modelo BookPage , todo funcionaba bien. Pero parece que Meta y Admin no ven los campos en las clases principales. ¿Me estoy perdiendo de algo? ¿Hay alguna manera de hacer que lean campos de padres abstractos?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

En el pasado, cuando no usaba los resúmenes y simplemente ponía todo en el modelo BookPage, todo funcionaba bien.

Por supuesto, funcionó bien porque puso todo dentro BookPage que no es una clase abstracta, lo que significa que se creará la tabla (y, por lo tanto, los campos).

Pero parece que Meta y Admin no ven los campos en las clases principales. ¿Me estoy perdiendo de algo?

Te estás perdiendo el hecho de que ninguno de tus modelos hereda del modelo abstracto GenericPage . Por lo tanto, el campo del book nunca se crea.

¿Hay alguna manera de hacer que lean campos de padres abstractos?

Debe crear/modificar un modelo que herede de un modelo abstracto. Tal vez, haz esto:

 class GenericBookPage(GenericColorPage, GenericPage):

lo que le permite heredar los campos GenericColorPage y GenericPage . Cuando digo heredar me refiero a cuando se ejecuta el comando de migrate para crear realmente la tabla de la base de datos y las columnas relevantes (campos del modelo).

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda