hatte ich eine Situation, wo ich eine Inline zeigen benötigen basierend auf der Admin-Seite dass du für eine bestimmte Geschichte warst.
Erweiterung auf alekwisnia Antwort konnte ich dynamischen inlines für Django arbeiten erhalten 1.3 mit dem folgenden Code:
In Highlights/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)
In Geschichte/admin. py
class StoryAdmin(HighlightAdmin):
Eines ist zu beachten, dass ich nicht nur die Manipulation in Line-Klassen (HighlightInline), sondern ich ändere Inline-Instanzen (HighlightInline (self.model, self.admin_site)). Dies liegt daran, dass Django bereits eine Liste von Inline-Instanzen erstellt hat, die auf einer Liste von Inline-Klassen während der anfänglichen Konstruktion der Admin-Klasse basiert.
Ich benutzte es wörtlich und es funktioniert Django, ich aber die beiden kehrt mit 'Rückkehr Super ersetzt (boxadmin, Selbst-) .change_view (Anfrage, object_id, FORM_URL, extra_context)' und 'return super (BoxAdmin, self) .add_view (request, form_url, extra_context)' –