tutorial theme template personalizar password bootstrap python django django-models django-admin

python - theme - django-admin command



¿Por qué no puedo registrar múltiples Django ModelAdmin con el mismo modelo? (1)

Usa modelos de proxy:

class Event(db.Model): ... class ActiveEventManager(models.Manager): def get_queryset(self): return super(ActiveEventManager, self).get_queryset().filter(active=True) class ActiveEvent(Event): class Meta: proxy = True objects = ActiveEventManager() class ArchiveEventManager(models.Manager): def get_queryset(self): return super(ArchiveEventManager, self).get_queryset().filter(active=False) class ArchiveEvent(Event): class Meta: proxy = True objects = ArchiveEventManager()

Ahora puede registrar 2 modelos sin reemplazar el método ModelAdmin.queryset :

class EventAdmin(admin.ModelAdmin): # ModelAdmin config admin.site.register(ActiveEvent, EventAdmin) admin.site.register(ArchiveEvent, EventAdmin)

Puede leer el modo sobre modelos de proxy y gerentes en el documento.

Además, usa esto:

queryset = super(EventArchiveAdmin, self).queryset(request)

Como primer argumento super() toma la clase actual . Ver doc

Nota: django ha cambiado el nombre de Manager.get_query_set a Manager.get_queryset en django == 1.7.

Tengo el siguiente ModelAdmin:

class EventAdmin(admin.ModelAdmin): # ModelAdmin config def queryset(self, request): queryset = super(EventAdmin, self).queryset(request) return queryset.exclude(date_end__lt=date.today()) admin.site.register(Event, EventAdmin)

Ahora quiero agregar un modelo para administrar eventos archivados (anteriores a hoy).

class EventArchiveAdmin(admin.ModelAdmin): # ModelAdmin config def queryset(self, request): queryset = super(EventArchiveAdmin, self).queryset(request) return queryset.filter(date_end__lt=date.today()) admin.site.register(Event, EventArchiveAdmin)

Pero si trato de hacerlo, obtengo la excepción AlreadyRegistered .

¿Por qué no puedo implementar otro ModelAdmin con el mismo modelo y cómo puedo obtener diferentes vistas de administrador del mismo modelo?

Sé que puedo implementar un list_filter personalizado en mi clase, pero me gustaría mantener las cosas separadas en diferentes páginas.