Добавление переходного поля ранжирования в класс и сериализатор 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)
...