Django-filter 多次搜索同一个外键

Django-filter search same foreign key multiple time

我的模型里有这个

models.py

 class Exercise(models.Model):
     LEVEL_CHOICES = [
         ('0', '0'),
         ('1', '1'),
         ('2', '2'),
         ('3', '3'),
     ]
     level = models.CharField(
         blank=False,
         null=False,
         max_length=1,
         choices=LEVEL_CHOICES
     )
 ...

在我的filters.py

class ExerciseFilter(django_filters.FilterSet):
    class Meta:
        model = Execise
        fields = [ 'name', 'tag', 'level' ]

最后在我的模板中

<form method="get">
       <div class="row">
         <div class="form-group col">
             <span class="">Name<span>
             {% render_field filter.form.name class="form-control" %}
         </div>
         <div class="form-group col">
             <span class="">Level<span>
             {% render_field filter.form.level class="form-control" %}
         </div>
         <div class="form-group col">
             <span class="">Tags<span>
             {% render_field filter.form.tag class="form-control" %}
         </div>
         
       </div>   </form>

它工作正常,我可以过滤我的练习,例如只看到级别 1 的练习。 它给了我一个 URL 这样的

?name=&level=1&tag=

但我希望能够进行 1 级和 2 级的锻炼,例如,像这样:

?name=&level=1&level=2&tag=

不知道如何实现...

我没用过 django-filter,但根据文档我认为你可以使用 ModelMultipleChoiceFilter。参见 (this) and (this)

谢谢@dj-ramones

可能应该更仔细地阅读文档...

我在 filters.py 中做了什么:

class ExerciseFilter(django_filters.FilterSet):
    level = django_filters.MultipleChoiceFilter(choices=Exercise.LEVEL_CHOICES)
    class Meta:
        model = Execise
        fields = [ 'name', 'tag', 'level' ]

所以,现在,我可以 select 多层次。非常感谢