У меня есть ViewSet
, которые имеют SearchFilter
в filter_backends
и два search_fields. Как вернуть JSON является единственным полевым результатом? Например, если я отправить ответ для поиска с «джо» подстроками я буду иметь только одно поле для этого поиска (имя финансируемой пользователя или полного имени), а не как имя пользователя и адреса электронной почты в каждом объекте JSON:Возврат только финансируемых полей в ответ (Django Rest SearchFilter)
{
[{
"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')