0 / 0 / 1
Регистрация: 15.11.2015
Сообщений: 45

Результат связи ManyToMany в виде списка значений REST

05.07.2020, 00:49. Показов 1028. Ответов 1

Студворк — интернет-сервис помощи студентам
Я хочу, чтобы связь многие ко многим выглядела просто как перечисление значений одного из атрибутов, но получаю перечисление объектов.
Вот, что я получаю:
JSON
1
2
3
4
5
6
7
8
9
10
"technicalissues": [
        {
            "id": 7,
            "value": "Значение 1"
        },
        {
            "id": 1,
            "value": "Значение 2"
        }
    ]
Вот, что я хочу
JSON
1
2
3
"technicalissues": [
            "Значение 1", "Значение 2"
    ]
Вот мои:
models
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Technicalissue(models.Model):
    value = models.CharField(max_length=350)
    def __str__(self):
        return self.value
    class Meta:
        managed = False
        db_table = 'technicalissues'
        verbose_name_plural = 'technicalIssues | Технические неисправности'
 
class Transport(models.Model):
    ....
    technicalissues = models.ManyToManyField(Technicalissue, related_name='transports', through='TransportTechnicalissue')
    class Meta:
        managed = False
        db_table = 'transports'
        verbose_name_plural = 'transports | Транспорт'
 
class TransportTechnicalissue(models.Model):
    id_transport = models.ForeignKey('Transport', models.DO_NOTHING, db_column='id_transport')
    id_technicalissue = models.ForeignKey(Technicalissue, models.DO_NOTHING, db_column='id_technicalIssue')
    class Meta:
        managed = False
        db_table = 'transports_technicalissues'
        verbose_name_plural = 'transports_technicalissues | Технические неисправности транспорта'
serializers
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class TechnicalIssueSerializer(serializers.ModelSerializer):
    class Meta:
        model = Technicalissue
        fields = '__all__'
 
class TransportSerializer(serializers.ModelSerializer):
    ...
    technicalissues = TechnicalIssueSerializer(many=True, read_only=True)
    class Meta:
        model = Transport
        fields = (..., 'technicalissues')
 
class TransportTechnicalIssueSerializer(serializers.ModelSerializer):
    class Meta:
        model = TransportTechnicalissue
        fields = '__all__'
views
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class TechnicalIssueView(viewsets.ViewSet):
    def list(self, request):
        queryset = Technicalissue.objects.all()
        serializer = TechnicalIssueSerializer(queryset, many=True)
        return Response(serializer.data)
 
    def retrieve(self, request, pk=None):
        queryset = Technicalissue.objects.all()
        technicalissue = get_object_or_404(queryset, pk=pk)
        serializer = TechnicalIssueSerializer(technicalissue)
        return Response(serializer.data)
 
class TransportView(viewsets.ViewSet):
    def list(self, request):
        queryset = Transport.objects.all()
        serializer = TransportSerializer(queryset, many=True)
        return Response(serializer.data)
 
    def retrieve(self, request, pk=None):
        queryset = Transport.objects.all()
        transport = get_object_or_404(queryset, pk=pk)
        serializer = TransportSerializer(transport)
        return Response(serializer.data)
 
class TransportTechnicalIssueView(viewsets.ViewSet):
    def list(self, request):
        queryset = TransportTechnicalissue.objects.all()
        serializer = TransportTechnicalIssueSerializer(queryset, many=True)
        return Response(serializer.data)
 
    def retrieve(self, request, pk=None):
        queryset = TransportTechnicalissue.objects.all()
        t_ti = get_object_or_404(queryset, pk=pk)
        serializer = TransportTechnicalIssueSerializer(t_ti)
        return Response(serializer.data)
Добавлено через 40 секунд
В TransportSerializer "TechnicalIssueSerializer" заменяем на "StringRelatedField"
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.07.2020, 00:49
Ответы с готовыми решениями:

ManyToMany в Spring Boot (Rest API)
Добрый вечер, такой вопрос. Есть таблицы tag и image, тег и картинка соответственно. У одной картинки может быть много тегов, и у одного...

как вывести результат в виде списка
вот у меня дана задача разработать программу ведомость группы вот рабочий код #include<iostream> using namespace std; ...

Как получить результат в виде списка?
Приветствую Всех ! Не силен в программирование. Нужно изменить функцию получение результата в коде. . . . . . . . . . . . . ...

1
102 / 75 / 38
Регистрация: 08.11.2017
Сообщений: 272
06.07.2020, 13:52
Переопределите метод to_representation в сериализаторе
Python
1
2
3
4
5
6
7
    
def to_representation(self, instance):
        obj = super().to_representation(instance)
        technicalissues_list = [] #тут можно просто скопировать исходный список в другую переменную, а эту назвать technicalissues
        for issue in technicalissues:
            technicalissues_list.append(technicalissues[issue]['value'])
        return obj
Добавлено через 1 час 57 минут
строчку одну забыл перед return
Python
1
obj['technicalissues'] = technicalissues_list
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.07.2020, 13:52
Помогаю со студенческими работами здесь

Как составить хиберовский запрос по связи ManyToMany, три сущности, четыре таблицы
Всех приветствую. Имеются три небольшие сущности: @Entity @Table(name = "books") public class Book { @Id ...

Как получить результат выполнения класса в виде списка?
Всем привет. Есть класс "Main", он связан с layot на котором есть "ListView" и "Button" Задача по нажатию кнопки запустить другой...

Вычислить таблицу значений функции. Результат вывести в виде таблицы.
дорогие, уважаемые, помогите, очень надо:wall:. зарание благодарен:senor: Создать блок-схему алгоритма и програмный код: обчислить...

Программа которая при вводе 5-ти переменных будет выдавать результат в виде списка
Всем привет. Такой вопрос. Хочу написать программу которая при вводе 5-ти переменных будет выдавать результат в виде списка. Значение...

В нелинейном списке найти заданный элемент. Результат выдать в виде линейного списка
Здравствуйте. У меня есть задача: В нелинейном списке найти заданный элемент (м.б., не атом). Результат выдать в виде линейного списка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
Множества в Python
py-thonny 11.06.2025
В Python существует множество структур данных, но иногда я сталкиваюсь с задачами, где ни списки, ни словари не дают оптимального решения. Часто это происходит, когда мне нужно быстро проверять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru