¿Omitir URL de administrador de Django para un modelo específico?
Primero un poco de historia:
Yo tengo unEvent
modelo que tiene variasevent_type
s. Quiero dividir uno de esos tipos de eventos, 'Film', en su propio administrador. Tengo la funcionalidad básica en su lugar: un modelo proxy heredado deEvent
, llamadoFilm
, un administrador personalizado para ese modelo de proxy que lo filtra solo a tipos de eventos de 'película', y es su propio ModelAdmin.
El problema es con el reverso. Ahora necesito filtrar películas de la @ principEvent
admin. No quiero alterar laEvent
model o su administrador predeterminado, porque el impacto sería demasiado generalizado. Entonces, intenté crear otro modelo proxy,EventAdminProxy
, con el único propósito de proporcionar una lista filtrada de eventos en el administrador. Luego registro este modelo, en lugar deEvent
, con el ModelAdmin existente.
Esto obviamente funciona, pero tiene el desafortunado efecto secundario de alterar las URL en el administrador. En lugar de que la lista de cambios esté en "/ admin / event / event /", ahora está en "/admin/event/eventadminproxy/"
Lo que estoy tratando de hacer es mantener esta configuración, pero también mantener la URL anterior. He intentado sobrecargar el ModelAdmin'sget_urls
método, pero por lo que puedo decir, no puedes controlar la URL completa allí, solo lo que viene después de la parte "/ app_label / model_class /".
Pensé en anularlo en el urls.py principal, pero no puedo encontrar una vista aceptable para vincular. Las vistas reales solo están disponibles en el objeto ModelAdmin instanciado, no en la clase en sí.
¿Alguna idea de cómo anular la URL que se usa en el administrador?