Nomad
12 января 2021 г. 20:02

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

Вам это нравится? Поделитесь в социальных сетях!

1
Nomad
  • 12 января 2021 г. 20:12

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

    Комментарии

    Только авторизованные пользователи могут публиковать комментарии.
    Пожалуйста, авторизуйтесь или зарегистрируйтесь