django-filters: Userを所属グループで検索
Django REST Frameworkとdjango-filterを使って、Userが所属しているGroupを複数指定して検索することはできます。
以下のように、django-filter.FilterSetを継承したフィルタセットを定義し、filters.ModelMultipleChoiceFilterを使って、Userが所属しているGroupを複数指定することができます。
from django.contrib.auth.models import User, Group
import django_filters
class UserFilter(django_filters.FilterSet):
groups = django_filters.ModelMultipleChoiceFilter(
field_name='groups__name',
to_field_name='name',
queryset=Group.objects.all()
)
class Meta:
model = User
fields = ['username', 'groups']
上記の例では、Userモデルに対するフィルタセットを定義しています。groupsフィールドには、django_filters.ModelMultipleChoiceFilterを使って、Userが所属しているGroupを複数指定することができます。field_nameには、Userモデルのgroups__nameフィールドを指定し、to_field_nameには、Groupモデルのnameフィールドを指定しています。