我使用Django的默认用户和REST API端点来列出按查询参数过滤的用户。它看起来像这样:
# serializers.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
# views.py
class UserFilter(django_filters.FilterSet):
class Meta:
model = User
class UserList(generics.ListAPIView):
model = User
serializer_class = UserSerializer
filter_class = UserFilter
只要我在查询参数中提供User
的字段名称,这就行得很好。因此,如果我想根据用户名过滤用户,我会使用/users/?username=johndoe
。但是,如果我想映射一个不是User模型中的字段的查询参数呢?我们说,我有一个名为nickname
的查询参数,我想用它来过滤first_name
字段?
使用URLConf
和命名组可能是一个解决方案,但如果我为15个字段执行,那么它将会很长。
更好的方法是什么?
答案 0 :(得分:1)
您可以将nickname
添加到指向模型上实际字段的FilterSet。
# views.py
class UserFilter(django_filters.FilterSet):
nickname = django_filters.CharFilter(name='first_name')
class Meta:
model = User