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