es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo mostrar múltiples modelos en una pestaña en el admin de Django?

Hice las aplicaciones de ítem y quiz con el comando startapp.

Agregué las aplicaciones a INSTALLED_APPS en settings.py y las registré en la página de administración.

admin.site.register(Item)

admin.site.register(Quiz)

En la página de administración, la pestaña de ítem y la pestaña de quiz existen por separado, y los modelos se pueden modificar en cada pestaña.

Quiero combinar estas dos pestañas en una pestaña llamada ‘foo’.

¿Cómo puedo resolver esto?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para combinar las pestañas “Item” y “Quiz” en una sola pestaña llamada ‘foo’ en la página de administración, sigue estos pasos:

    1. Crea una nueva aplicación llamada ‘foo’ usando el comando startapp.
    2. En la aplicación ‘foo’, crea un nuevo archivo llamado ‘admin.py’.

    3. Importa los modelos Item y Quiz de sus respectivas aplicaciones.

    4. Define una nueva clase ModelAdmin para la aplicación ‘foo’ que herede de admin.ModelAdmin.

    5. Sobrescribe el método get_queryset() para incluir tanto los objetos de Item como los de Quiz.

    6. Registra la nueva clase ModelAdmin para tu aplicación ‘foo’.

    7. En settings.py, elimina las aplicaciones Item y Quiz de INSTALLED_APPS.

    8. Agrega la aplicación ‘foo’ a INSTALLED_APPS.

    9. Ejecuta el servidor y verifica que las pestañas Item y Quiz se hayan combinado en una sola pestaña ‘foo’ en la página de administración.

    Aquí tienes un código de ejemplo que puedes usar como punto de partida:

    from django.contrib import admin
    from foo.models import Item
    from foo.models import Quiz
    
    class FooAdmin(admin.ModelAdmin):
        def get_queryset(self, request):
            qs1 = Item.objects.all()
            qs2 = Quiz.objects.all()
            return qs1 | qs2
    
    admin.site.register(Foo, FooAdmin)
    

    Asegúrate de reemplazar las declaraciones de importación y los nombres de los modelos con los correctos para tu proyecto.

Comments are closed.