擅长:python、mysql、java
<p>我知道这是一个老问题,但也许值得给出一个更新的答案。在</p>
<p>Django过滤器贡献者添加了一个名为<code>BaseInFilter</code>的字段,您可以将其与其他过滤器组合起来验证内容。在</p>
<p>参见文档:
<a href="https://django-filter.readthedocs.io/en/latest/ref/filters.html#baseinfilter" rel="nofollow noreferrer">https://django-filter.readthedocs.io/en/latest/ref/filters.html#baseinfilter</a></p>
<p>例如,这在您的案例中是可行的:</p>
<pre class="lang-py prettyprint-override"><code>from django_filters import rest_framework as filters
class NumberInFilter(filters.BaseInFilter, filters.NumberFilter):
pass
class AccommodationFilter(filters.FilterSet):
accommodationType_id_in = NumberInFilter(field_name='accommodationType_id', lookup_expr='in')
class Meta:
model = Accommodation
fields = ['accommodationType_id_in', ]
</code></pre>
<p>然后您就可以通过id列表进行筛选:<code>http://localhost:8000/accommodations?accommodationType_id_in=1,2</code></p>