Как правильно преобразовать внутренние данные из Django во внешние модели в Angular

Я начинающий, работаю над Angular frontend с Django backend. Я постарался сформулировать свой вопрос как можно точнее. Пожалуйста, не ставьте минусы; если что-то непонятно, не стесняйтесь попросить разъяснений, и я с радостью предоставлю больше деталей.

У меня есть три модели: Задача, Подзадача и Пользователь.

  • У задачи может быть несколько подзадач.
  • Подзадача принадлежит только одной задаче.
  • Задача может обрабатываться несколькими пользователями.

Я получаю данные задач, подзадач и пользователей из бэкенда.

А Подзадача может быть создана только после создания соответствующей Задачи, поскольку Подзадача всегда должна иметь taskId.

Вот наиболее важные модели данных:

Backend:

// Users
{
    "id": 1,
    "email": "bob@bob.com",
    "name": "bob"
}

// Tasks
{
    "id": 1,
    "title": "Task 1",
    "description": "Task 1",
    "due_to": "2024-06-26T13:18:08Z",
    "created": "2024-06-26T13:18:36.238944Z",
    "updated": "2024-06-26T13:18:36.239951Z",
    "priority": "LOW",
    "category": "TECHNICAL_TASK",
    "status": "TO_DO",
    "subtasks": [1],
    "users": [1]
}

// Subtasks
{
    "id": 1,
    "task_id": 1,
    "description": "Subtask 1",
    "is_done": false
}

Фронтенд: Во фронтенде у меня есть структура данных Task, которая включает в себя подзадачи и пользователей.

export interface Task {
  id: number,
  title: string,
  description: string,
  dueTo: Date,
  created: Date,
  updated: Date,
  priority: Priority,
  category: Category,
  subtasks: Subtask[],
  users: User[],
  status: TaskStatus
}

Мои вопросы:

  1. Как получить полный объект подзадачи из бэкенда, используя только идентификатор подзадачи?
  • Я мог бы написать функцию getSubtaskById, но будет ли это неэффективно с точки зрения времени выполнения?
  1. Как преобразовать данные бэкенда в модель данных фронтенда?

Буду благодарен за любые советы о том, как правильно это сделать, или предложения о том, что сделать по-другому. Спасибо за любые советы!

Вернуться на верх