Подтвердить что ты не робот

Администратор Django, объекты фильтра для встроенного набора форм

У меня встроенный набор форм, и я хотел бы исключить отображение некоторых объектов модели в наборе форм.

Например, существует модель B, которая имеет внешний ключ для модели A, поэтому она имеет отношение 1: n (объект имеет много объектов B). Теперь на странице редактирования admin у меня есть встроенные строки B. Интересно, возможно ли каким-либо образом отфильтровать список объектов B до визуализации встроенного набора форм, поэтому не все связанные с B объекты A попадают в набор форм.

4b9b3361

Ответ 1

Ответ на собственный вопрос может показаться немного странным, но я нашел другое решение;)

Возникла проблема с предоставлением настраиваемого набора запросов для набора форм, для этого нет привязки для встроенных форм. Поэтому я подклассифицировал BaseInlineFormSet и переопределил метод get_queryset. Затем я просто предоставил этот набор форм в InlineModelAdmin, и это было сделано.

Пример:

class MyFormSet(BaseInlineFormSet):
    def get_queryset(self):
        if not hasattr(self, '_queryset'):
            qs = super(MyFormSet, self).get_queryset().filter(main=False)
            self._queryset = qs
        return self._queryset

и класс администратора:

class MyInline(admin.TabularInline):
    model = m.MyModel
    formset =  MyFormSet
    ...