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.

Campo de permiso “select like” de Django admin.

¿Cómo crear un formulario en el panel de administración como este? Es la vista predeterminada del usuario administrador.

Imagen 1

Mi aspecto es ese, pero quiero dos “ventanas”.

Imagen 2

class RoleAdmin(admin.ModelAdmin):
    list_display = ('name', )

fieldsets=(
    (None, {'fields': ('name', )}),
    (_('Role Permissions'), {
        'fields': ('permissions', ),
    }),
)
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para crear un formulario en el panel de administración como se muestra en la segunda imagen, debes utilizar la clase TabularInline de Django. Aquí tienes un ejemplo de código:

    from django.contrib import admin
    from .models import Role, Permissions
    
    class PermissionsInline(admin.TabularInline):
        model = Permissions
    
    class RoleAdmin(admin.ModelAdmin):
        list_display = ('name',)
    
        fieldsets = (
            (None, {'fields': ('name',)}),
        )
    
        inlines = [
            PermissionsInline,
        ]
    

    En este código, definimos una nueva clase interna llamada PermissionsInline que extiende TabularInline y especifica el modelo con el que debe trabajar (Permissions, en este caso). Luego, en la definición de la clase RoleAdmin, establecemos el atributo inlines como [PermissionsInline]. Esto le indica a Django que incluya el formulario PermissionsInline como un formulario anidado dentro del formulario Role.

    Con este código en su lugar, el panel de administración mostrará un formulario como se muestra en la segunda imagen, con dos “ventanas” o áreas de entrada. El área superior es para los campos del modelo Role y el área inferior es para los campos anidados del modelo Permissions.

Comments are closed.