que tenía una situación en la que tenía que mostrar una línea base en el sitio de administración que estabas en una historia dada.
Ampliando la respuesta de alekwisnia, yo era capaz de conseguir inlines dinámicas de trabajo de Django 1.3 usando el siguiente código:
En aspectos más destacados/admin.py
class HighlightInline(generic.GenericTabularInline):
model = Highlight
extra = 1
max_num = 4
fields = ('order', 'highlight')
template = 'admin/highlights/inline.html'
class HighlightAdmin(admin.ModelAdmin):
def regulate_highlight_inlines(self):
highlights_enabled = Setting.objects.get_or_default('highlights_enabled', default='')
highlight_inline_instance = HighlightInline(self.model, self.admin_site)
highlight_found = any(isinstance(x, HighlightInline) for x in self.inline_instances)
if highlights_enabled.strip().lower() == 'true':
if not highlight_found:
self.inline_instances.insert(0, highlight_inline_instance)
else:
if highlight_found:
self.inline_instances.pop(0)
print self.inline_instances
def change_view(self, request, object_id, form_url='', extra_context=None):
self.regulate_highlight_inlines()
return super(HighlightAdmin, self).change_view(request, object_id)
def add_view(self, request, form_url='', extra_context=None):
self.regulate_highlight_inlines()
return super(HighlightAdmin, self).add_view(request, form_url, extra_context)
En la historia/admin. py
class StoryAdmin(HighlightAdmin):
Una cosa a tener en cuenta es que no estoy simplemente manipulando en clases de línea (HighlightInline), sino más bien, estoy cambiando las instancias en línea (HighlightInline (self.model, self.admin_site)). Esto se debe a que django ya ha creado una lista de instancias en línea basadas en una lista de clases en línea durante la construcción inicial de la clase de administrador.
utilicé pie de la letra y funciona, aunque he sustituido las dos vueltas con 'súper volver (boxadmin, auto) .change_view (solicitud, object_id, FORM_URL, extra_context)' y 'return super (BoxAdmin, self) .add_view (request, form_url, extra_context)' –