Nomad12 января 2021 г. 8:02
DjangoRestFramework сериализаторы
django, drf, serializers, apiview
Приветствую уважаемые коллеги.
Нужен совет как поступить в следующей ситуации:
есть некая кастомная модель пользователя наследуемая от AbstractUser.
есть приложение в которой есть следующий комплект моделей:
class Client(models.Model): client_name=... client_email=... client_city=... ..... class ProjectLanguage(models.Model): projectlanguage_name=... class Project(models.Model): name=models.CharField... client = models.ForeignKey(Client,...) tester_lead = models.ForeignKey(User,...related_name="project_tester_lead"...) tester_team = models.models.ManyToManyField(User, related_name="project_tester_team"...) project_language = models.ForeignKey(ProjectLanguage, related_name="project_language",....)
я сериализую модель пользователя:
class UserSerializerd(serializers.ModelSerializer): project_tester_lead = serializers.StringRelatedField(many=True) class Meta: model= User fields = ['id', 'username', 'last_name', 'first_name', 'project_tester_lead']
вот представление для данного сериализатора:
class UserListd(APIView): permission_classes = [permissions.AllowAny] def get(self, request): usr = User.objects.all() ser = UserSerializerd(usr, many=True) return Response(ser.data)
результат:
[ { "id": 1, "username": "admin", "last_name": "", "first_name": "", "project_tester_lead": [] }, { "id": 2, "username": "tester1", "last_name": "", "first_name": "", "project_tester_lead": [ "Project1", "Project3" ] }, { "id": 3, "username": "tester2", "last_name": "", "first_name": "", "project_tester_lead": [ "Project2" ] } ]
как мы видим тянется список из модели Project
теперь задача стоит добавить чтобы сериализатор тянул остальные данные из модели Project связанные с данным рroject-ом
подскажите как или в каком направлении копать?
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Пожалуйста, авторизуйтесь или зарегистрируйтесь
B
- Bogdannn
- 27 марта 2024 г. 18:15
C++ - Тест 001. Первая программа и типы данных
- Результат:46баллов,
- Очки рейтинга-6
Последние комментарии
Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Анатолий Кононенко5 февраля 2024 г. 0:50
EVA25 декабря 2023 г. 9:30
Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
Сейчас обсуждают на форуме
Как получить в массив значения из связанной модели? Спасибо, разобрался:))
AC
QML Обнулить значения SpinBox Доброго времени суток, не могу разобраться с обнулением значение SpinBox находящего в делегате. import QtQuickimport QtQuick.ControlsWindow { width: 640 height: 480 visible: tr…
Alexandru Codreanu19 января 2024 г. 10:57
BlinCT27 декабря 2023 г. 7:57
Дмитрий10 января 2024 г. 3:18
Evgenii Legotckoi12 декабря 2023 г. 5:48
как бы одно решение я нашел, это Вложенные отношения, НО данный метод предусматривает создания сериализаторов для каждой модели, мен кажется это очень долго и длинно