Как написать сериализаторы DRF для желаемого вывода?

необходимо получить следующий вывод, используя приведенную ниже структуру модели

{
  "User": [
    {
      "id": 1,
      "name": "XYZ",
      "Task": [
        {
          "id": "1",
          "task_name": "task 1"
        },
        {
          "id": "2",
          "task_name": "task 2"
        }
      ]
    },
    {
      "id": 2,
      "name": "ABC",
      "Task": [
        {
          "id": "1",
          "task_name": "task 1"
        }
      ]
    }
  ]
}

Таким образом, модель разработана, и я хочу получить вышеуказанный результат, не прибегая к дополнительным запросам к базе данных для каждой записи (n+1). Можно ли этого добиться, используя select_related или prefetch related или что-то еще?

class User(models.Model):
  name = models.Charfield()

class Task(models.Model)
  task_name = models.Charfield()

class UserTask(models.Model):
  user = models.Foreignkey(User, related_name = 'user')
  task = models.Foreignkey(Task, related_name = 'tasks')

Вы можете действовать следующим образом

class TaskSerializer(ModelSerializer):
      class Meta:
            model=Task
            fields = '__all__'
class UserTaskSerializer(ModelSerialzier):
       id = serializer.CharField(source ='user.id')
       name = serializer.CharField(source ='user.username') # might be username,fullname or name only change in your own way
       task = TaskSerializer(many=true)
       class Meta:
            model=UserTask
            fields = ('id','name','task')

Просто убедитесь, что вы используете many=True в своем представлении для UserSerializer класса

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