Добавление переходного поля ранжирования в класс и сериализатор djangorest

Я новичок в djangorest и не уверен, как вообще это сделать.

У меня есть Rest API, который принимает пост-запрос (со списком параметров) и возвращает список элементов из модели через сериализатор. Все работает отлично.

Мне нужно добавить "ранг" или, скорее, "оценку релевантности" к элементам в моем возвращаемом списке. Я могу прекрасно вычислить ранг - я делаю это в REST представлении - что я не понимаю, так это как передать ранг обратно с сериализованным классом модели в ответе.

Я мог бы создать совершенно новый объект и передать ему id.... элемента, но я бы предпочел прикрепить переходное поле: {"rank": value } к каждому элементу моего списка.

Могу ли я это сделать?

Edit: Меня попросили предоставить код. Вот что я пытаюсь сделать. Класс serializer - это просто базовый сериализатор всех полей.

@api_view(['GET', 'POST'])
def getServices(request):
  ...
  items = getItems(request.data) #returns relevent items
  for each item in items:
    rank = calculateRank(item,request.data) #caculates rank based on a ranking model
    ###  
    # I would like add the rank to the item here... unless there is another way?
    ###
  ...
  serializer = ItemSerializer(items, many=True)
  return Response(serializer.data, status=status.HTTP_200_OK)

Сначала вы можете добавить поле ранга в элемент.

@api_view(['GET', 'POST'])
def getServices(request):
    ...
    items = getItems(request.data) #returns relevent items
    for item in items:            
        item["rank"] = calculateRank(item, request.data)
    ...
    serializer = ItemSerializer(items, many=True)
    return Response(serializer.data, status=status.HTTP_200_OK)

И вы также можете добавить поле ранга в сериализатор.

class ItemSerializer(serializers.ModelSerializer):
    ...
    rank = serializers.IntegerField(read_only = True, required = False)
    
    ...
Вернуться на верх