Django rest framework не отображает данные при выполнении фильтрации
Я давно не использовал Django RF и столкнулся с проблемой. Я пытался выполнить object.get() и получил ошибку, которая гласила, что возвращается больше 1 (возвращается 2), поэтому я изменил .get на .filter и это устранило мою проблему с ошибкой, но он не показывает никаких данных при переходе к конечной точке, хотя при печати в консоли он показывает, что я получил набор запросов (но это массив, [, ]). Вот мой ViewSet:
class TeamViewSet(ModelViewSet):
queryset = Team.objects.all()
serializer_class = TeamSerializer
permission_classes = [IsAdminUser]
@action(detail=False, methods=['GET','PUT'], permission_classes=[IsAuthenticated])
def me(self, request):
# return Response(request.user.id)
try:
team = Team.objects.filter(leader__user_id=request.user.id)
print(team)
except Team.DoesNotExist:
team = None
if request.method == 'GET':
serializer = TeamSerializer(team)
return Response(serializer.data)
elif request.method == 'PUT':
serializer = TeamSerializer(team, data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)
Эту проблему легко исправить, я просто давно не использовал Django RF, Спасибо за любую помощь :)
Я разобрался, просто нужно было включить 'many=True' при создании сериализатора. Новый код для справки:
class TeamViewSet(ModelViewSet):
queryset = Team.objects.all()
serializer_class = TeamSerializer
permission_classes = [IsAdminUser]
@action(detail=False, methods=['GET','PUT'], permission_classes=[IsAuthenticated])
def me(self, request):
# return Response(request.user.id)
try:
team = Team.objects.filter(leader__user_id=request.user.id)
print(team)
except Team.DoesNotExist:
team = None
if request.method == 'GET':
serializer = TeamSerializer(team, many=True)
return Response(serializer.data)
elif request.method == 'PUT':
serializer = TeamSerializer(team, data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)