Я должен отделиться, представления для добавляют и изменяют страницу. В добавляют страницу, я хотел бы исключить некоторые поля из встроенного formset. Я подготовил два класса TabularInline, один из них содержит свойство, 'исключают'. Я пытался использовать их следующим образом:
class BoxAdmin(admin.ModelAdmin):
def change_view(self, request, obj_id):
self.inlines=[ItemChangeInline,]
return super(BoxAdmin, self).change_view(self.request, obj_id)
def add_view(self, request):
self.inlines=[ItemAddInline,]
return super(BoxAdmin, self).add_view(self, request)
без эффекта (не встроенный показан вообще).
Вот код, который, кажется, работает:
class BoxAdmin(admin.ModelAdmin):
def change_view(self, request, obj_id):
self.inlines=[ItemChangeInline,]
for inline_class in self.inlines:
inline_instance = inline_class(self.model, self.admin_site)
self.inline_instances.append(inline_instance)
return super(BoxAdmin, self).change_view(request, obj_id)
def add_view(self, request):
self.inlines=[ItemAddInline,]
for inline_class in self.inlines:
inline_instance = inline_class(self.model, self.admin_site)
self.inline_instances.append(inline_instance)
return super(BoxAdmin, self).add_view(request)
Однако, это выглядит нелепо, потому что эта часть:
for inline_class in self.inlines:
inline_instance = inline_class(self.model, self.admin_site)
self.inline_instances.append(inline_instance)
- это копировальная вставка из init метода admin.ModelAdmin (поэтому он запускается дважды).
Почему в add_view вы имеете .add_view(self, request)
и в просмотре изменений вы имеете .change_view(self.request, ...)
? Я думаю, что вам не нужен self в add_view, так как вы используете super.