
Вот как я написал фильтры, но, конечно, это неправильно, потому что фильтр добавляется, даже когда я выбираю только одно поле. Кроме того, я использую один и тот же набор фильтров для обоих.
Код: Выделить всё
tipo_oid = filters.ChoiceFilter(label='Tipo Identificativo',
choices = TipoOid.objects.all().values_list("id","denominazione").exclude(annullato=True).filter(id__in=[2,3,12,22,9,49]).order_by('denominazione'),
method='filter_ide')
identificativo = filters.CharFilter(label='Identificativo', method='filter_ide')
def filter_ide(self, queryset, name, value):
if name == 'tipo_oid':
filtroPfIdInPfIde = PfIdentificativi.objects.filter(pf_id=OuterRef('id')).filter(tipo_oid=value).exclude(annullato=True)
queryset = queryset.filter(Exists(filtroPfIdInPfIde))
if name =='identificativo':
filtroIdeInPfIde = PfIdentificativi.objects.filter(pf_id=OuterRef('id')).filter(identificativo=value).exclude(annullato=True)
queryset = queryset.filter(Exists(filtroIdeInPfIde))
Как бы вы это сделали?
Теперь, даже если бы я использовал два отдельных фильтра, результат не был бы тем, который мне хотелось бы.
Я думаю, я мог бы просто сделать это в viewSet , но это не то, что мне нужно, потому что я хочу сделать это в Фильтре.
Подробнее здесь: https://stackoverflow.com/questions/791 ... ve-a-value
Мобильная версия