DRF - включить поиск одного объекта без фильтра

Использование наборов представлений DRF по умолчанию со следующими моделями и сериализаторами моделей:

class Company(Model):
    active = BooleanField()

class Person(Model):
    company = ForeignKeyField(to=Company)
    

Мой фильтр для компаний:

class CompanyFilter(filters.FilterSet):
...
@property
    def qs(self):
        parent = super().qs
        if 'active' not in self.data:
            return parent.filter(active=True)
        return parent

Я хотел бы:

  • скрывать неактивные компании по умолчанию
  • иметь правильную навигацию от всех лиц, даже к деактивированным компаниям

Согласно DRF docs:

Обратите внимание, что если бэкэнд фильтра настроен для представления, то помимо использования для фильтрации представлений списка, он также будет использоваться для фильтрации наборов запросов, используемых для возврата одного объекта.

Если я введу упомянутый фильтр, пользователь, переходя от человека к его компании, получит 404, если эта компания неактивна. Ему придется задавать GET-параметр для поиска одного объекта, что невозможно узнать.

Вернуться на верх