Django_filter: фильтрация по текущему значению другого поля

Итак, мне поручили создать страницу событий, на которой моя компания может размещать информацию о предстоящих событиях, а посетители могут фильтровать по местоположению, названию или типу события на основе других 'is_virtual', которые могут быть личными, виртуальными или гибридными. Теперь они хотят "игнорировать" фильтр по местоположению, если мероприятие виртуальное или гибридное, но сохранить его, если мероприятие очное. У меня возникли проблемы с доступом к значению поля is_virtual текущего объекта, чтобы создать условную фильтрацию на основе его значения.

вот код фильтра:

import django_filters
from django import forms
from .models import EventsPage

class EventsFilter(django_filters.FilterSet):
  event_type = django_filters.ChoiceFilter(
    choices=EventsPage.event_choices, 
    empty_label='Event Type',
    widget=forms.Select(attrs={'class': 'custom-select mb-2'})
  )

  location = django_filters.ChoiceFilter(
    choices=EventsPage.location_choices, 
    empty_label='All Locations',
    widget=forms.Select(attrs={'class': 'custom-select mb-2'})
  )

  title = django_filters.CharFilter(
    lookup_expr='icontains', 
    widget=forms.TextInput(
      attrs={'class': 'form-control', 'placeholder': 'Search Events'})
  )
  
  class Meta:
    model = EventsPage
    fields = ['event_type', 'location', 'title'] 

Любые идеи помогут! Заранее спасибо.

пробовал использовать аргумент ключевого слова метода, встроенного в библиотеку django_filter, и значения, переданные вспомогательному методу, показывают только значение текущего поля, но я не могу увидеть текущее значение поля is_virtual.

вот что я пытался сделать:

  location = django_filters.ChoiceFilter(
    method='location_filtering',
    choices=EventsPage.location_choices, 
    empty_label='All Locations',
    widget=forms.Select(attrs={'class': 'custom-select mb-2'})
  )
  def location_filtering(self, queryset, name, value):
    if (Q(virtual_choices='Virtual') | Q(virtual_choices='Hybrid')):
      return queryset.exclude(**{name: value})
    else:
      return queryset.filter(**{name: value})


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