更新时间:2023-09-04 11:10:04
您可以链接过滤器.例如,如果您需要所有标签都包含 1
和 2
值的用户,则可以编写如下查询:
You can chain filters. For example, if you need all users which labels contain both 1
and 2
values, you can write a query like so:
User.objects.filter(labels=1).filter(labels=2)
django-filters
默认情况下不支持此类查询,因此您需要自定义过滤器.
django-filters
does not support queries like this by default so you need a custom filter.
class M2MFilter(django_filters.Filter):
def filter(self, qs, value):
if not value:
return qs
values = value.split(',')
for v in values:
qs = qs.filter(labels=v)
return qs
class UserFilter(django_filters.FilterSet):
labels = M2MFilter(name='labels')
class Meta:
model = User
fields = ('labels',)
现在,您可以用逗号分隔标签ID,并获得所需的信息
Now you can write labels id's comma-separated and get exactly what you need
/api/users/?labels=1,2