Nomad
Jan. 12, 2021, 8:02 p.m.

DjangoRestFramework сериализаторы

django, drf, serializers, apiview

Приветствую уважаемые коллеги.
Нужен совет как поступить в следующей ситуации:

есть некая кастомная модель пользователя наследуемая от AbstractUser.
есть приложение в которой есть следующий комплект моделей:

  1. class Client(models.Model):
  2. client_name=...
  3. client_email=...
  4. client_city=...
  5. .....
  6.  
  7. class ProjectLanguage(models.Model):
  8. projectlanguage_name=...
  9.  
  10.  
  11. class Project(models.Model):
  12. name=models.CharField...
  13. client = models.ForeignKey(Client,...)
  14. tester_lead = models.ForeignKey(User,...related_name="project_tester_lead"...)
  15. tester_team = models.models.ManyToManyField(User, related_name="project_tester_team"...)
  16. project_language = models.ForeignKey(ProjectLanguage, related_name="project_language",....)
  17.  

я сериализую модель пользователя:

  1. class UserSerializerd(serializers.ModelSerializer):
  2.  
  3. project_tester_lead = serializers.StringRelatedField(many=True)
  4.  
  5.  
  6. class Meta:
  7. model= User
  8. fields = ['id', 'username', 'last_name', 'first_name', 'project_tester_lead']
  9.  

вот представление для данного сериализатора:

  1. class UserListd(APIView):
  2. permission_classes = [permissions.AllowAny]
  3.  
  4. def get(self, request):
  5. usr = User.objects.all()
  6. ser = UserSerializerd(usr, many=True)
  7. return Response(ser.data)

результат:

  1. [
  2. {
  3. "id": 1,
  4. "username": "admin",
  5. "last_name": "",
  6. "first_name": "",
  7. "project_tester_lead": []
  8. },
  9. {
  10. "id": 2,
  11. "username": "tester1",
  12. "last_name": "",
  13. "first_name": "",
  14. "project_tester_lead": [
  15. "Project1",
  16. "Project3"
  17. ]
  18. },
  19. {
  20. "id": 3,
  21. "username": "tester2",
  22. "last_name": "",
  23. "first_name": "",
  24. "project_tester_lead": [
  25. "Project2"
  26. ]
  27. }
  28. ]

как мы видим тянется список из модели Project
теперь задача стоит добавить чтобы сериализатор тянул остальные данные из модели Project связанные с данным рroject-ом

подскажите как или в каком направлении копать?

1

Do you like it? Share on social networks!

1
Nomad
  • Jan. 12, 2021, 8:12 p.m.

как бы одно решение я нашел, это Вложенные отношения, НО данный метод предусматривает создания сериализаторов для каждой модели, мен кажется это очень долго и длинно

    Comments

    Only authorized users can post comments.
    Please, Log in or Sign up
    • Last comments
    • AK
      April 1, 2025, 11:41 a.m.
      Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
    • Evgenii Legotckoi
      March 9, 2025, 9:02 p.m.
      К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
    • VP
      March 9, 2025, 4:14 p.m.
      Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
    • ИМ
      Nov. 22, 2024, 9:51 p.m.
      Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
    • Evgenii Legotckoi
      Oct. 31, 2024, 11:37 p.m.
      Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup