Как фильтровать divs по имени модели в Django

У меня есть страница "Мое избранное" со списком избранных статей. Пользователи могут добавлять в избранное объекты из 3 моделей: статья, вопрос, видео. Мне нужен фильтр по моделям, чтобы после нажатия на кнопку сайт отображал только соответствующие карточки. Я использую Bootstrap 5.

Примером такой логики является здесь, однако, я не вижу никакой возможности выбрать 2 категории (в моем случае модели).

Каждая кнопка должна быть связана с каждой моделью, так что если я нажимаю вопрос, то появляются только заголовки из вопроса, если статью, то только из статьи, если я нажимаю статью и вопрос, то получаю карточки из этих двух моделей. Я также хочу иметь опцию Show all.

models.py

class Article(models.Model):
    author = models.ForeignKey(User, blank=True, null=True, on_delete=models.DO_NOTHING)
    title = models.CharField(max_length=200)
    ...
    class Meta:
        verbose_name = 'article'

class Question(models.Model):
    author = models.ForeignKey(User, blank=True, null=True, on_delete=models.DO_NOTHING)
    title = models.CharField(max_length=200)
    class Meta:
        verbose_name = 'question'

class Video(models.Model):
    author = models.ForeignKey(User, blank=True, null=True, on_delete=models.DO_NOTHING)
    title = models.CharField(max_length=200)
    ...

    class Meta:
        verbose_name = 'video'

views.py

class FavouriteList(LoginRequiredMixin, ListView):
    login_url = 'login'
    redirect_field_name = 'login'
    template_name = 'hal/Favourites.html'
    model = Article
    queryset = Article.objects.all()
    
    def get_context_data(self, **kwargs):
        context = super(FavouriteList, self).get_context_data(**kwargs)
        tags = Tag.objects.all().values('name', 'slug')
        user = self.request.user
        
        favourite_articles = user.favourite_article.all()
        favourite_question = user.favourite_question.all()
        favourite_video = user.favourite_video.all()

        context['favourite_articles'] = favourite_articles
        context['favourite_question'] = favourite_question
        context['favourite_video'] = favourite_video
        context['tags'] = tags
        
        return context

Favourites.html

{% block body %}
Choices:
<div id="myBtnContainer">
  <button class="btn"> Show all</button>
  <button class="btn"> Question</button>
  <button class="btn"> Video</button>
  <button class="btn"> Article</button>
</div>

{% if favourite_qa %}
<section class=" py-1">
  <div class="row">
    {% for qa in favourite_qa  %}
      <div class="col-4">

        <div class="card w-100">
          <a href="{{ qa.get_absolute_url }}"><div class="card-title"><strong>{{qa.title}}</strong></div></a>
        </div>
      
      </div>
      
    {% endfor %}
  </div>
</section>
{% endif %}

{% if favourite_video %}
<section class="py-1">
  {% comment %} <h2>Amazing tutorials</h2>
  <hr> {% endcomment %}
  <div class="row">
    {% for video in favourite_video  %}

    <div class="col-4">
      <div class="card w-100 ">
        <a href="{{ video.get_absolute_url }}"><div class="card-title"><strong>{{video.title}}</strong></div></a>
      </div>
    </div>

    {% endfor %}
  </div>
</section>
{% endif %}

{% if favourite_articles %}
<section class="py-1">
  <div class="row">
    {% for article in favourite_articles  %}

    <div class="col-4">
      <div class="card w-100">
        <a href="{{ article.get_absolute_url }}"><div class="card-title"><strong>{{article.title}}</strong></div></a>
      </div>
    </div>
  
    {% endfor %}
  </div>
</section>
{% endif %}

{% endblock body %}

Вопрос

Какой лучший подход для фильтрации карточек по модели? Могу ли я сделать это из файла view.py? Если да, то как?

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