【发布时间】:2017-01-22 05:52:01
【问题描述】:
我有ViewSet,在filter_backends 中有SearchFilter 和两个search_fields。如何返回 JSON 代表唯一的字段结果?
例如,如果我使用“jo”子字符串发送搜索响应,我将只有一个字段用于此搜索(资助的用户名或全名),而不是每个 JSON 对象中的用户名和电子邮件:
{
[{
"username": "jonh";
},
{
"fullname": "Jonh";
},
{
"username": "jo";
},
{
"fullname": "Johnson";
}
]
}
viewsets.py:
class UserViewSet(mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.ListModelMixin,
viewsets.GenericViewSet):
queryset = User.objects.all()
permission_classes = (IsUserOrReadOnly,)
filter_backends = (filters.SearchFilter,)
search_fields = ('^username', '^fullname',)
def get_serializer_class(self):
if hasattr(self, 'action') and self.action == 'list':
return UserListSerializer
return UserDetailSerializer
serializers.py:
class UserListSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'email', 'fullname')
【问题讨论】:
标签: json django-rest-framework django-filter