Отличающийся администратор Django встраивает для изменения, и добавьте представление

Я должен отделиться, представления для добавляют и изменяют страницу. В добавляют страницу, я хотел бы исключить некоторые поля из встроенного 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)

без эффекта (не встроенный показан вообще).

13
задан Kev 24 January 2011 в 19:57
поделиться

2 ответа

Вот код, который, кажется, работает:

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 (поэтому он запускается дважды).

7
ответ дан 1 December 2019 в 21:37
поделиться

Почему в add_view вы имеете .add_view(self, request) и в просмотре изменений вы имеете .change_view(self.request, ...)? Я думаю, что вам не нужен self в add_view, так как вы используете super.

1
ответ дан 1 December 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: