Muti-array результат в моделях django

У меня есть второй экземпляр базы данных под названием slave_db в этой базе данных есть такие таблицы, профиль

enter image description here

и детали земель

enter image description here

Я создал model.py для них

from django.db import models

class Fields(models.Model):
     field_id = models.IntegerField()
     field_name = models.CharField(max_length=50)

     class Meta:
        managed = False
        db_table = 'tbl_fields'

class Profile(models.Model):
     profile_id = models.IntegerField()
     name = models.CharField(max_length=20)
     fields = models.OneToOneField(Fields)

     class Meta:
        managed = False
        db_table = 'tbl_profile'

У меня также есть мой serialize.py

from rest_framework import serializer
from .models import Profile

class ProfileSerializer(serializers.ModelSerializer):
      class Meta: 
            model = Profile
            fields = ['profile_id','control_no','name','fields']

тогда в моем файле views.py

from django.shortcuts import render
from rest_framework.decorators import api_view, permission_classes
from rest_framework.response import Response
from rest_framework.generics import get_object_or_404

from .models import Profile
from .serializers import Profile Serializer

@api_view(['GET'])
def ProfileDetails(request):
    control_no = request.GET.get("control_no")

    details = Profiles.objects.using("slave_db").select_related("fields").filter(control_no = control_no)
    
    detailSerializer = ProfileSerializer(details, many=True)
    print(detailSerializer)

теперь результат будет

[
  {
    "profile_id": 1,
    "control_no": "8-001",
    "name": "Foo",
    "fields": "8-001"
  },
  {
    "profile_id": 1,
    "control_no": "8-002",
    "name": "Bar",
    "fields": "8-002"
  },
]

как я могу правильно получить данные и получить такой результат?

[
  {
    "profile_id": 1,
    "control_no": "8-001",
    "name": "Foo",
    "fields": [
        {
           "field_id": 1
           "field_name": "Charlie Land"
        },
        {
           "field_id": 2
           "field_name": "Alpha Land"
        }
    ]
  },
  {
    "profile_id": 1,
    "control_no": "8-002",
    "name": "Bar",
    "fields": [
        {
           "field_id": 3
           "field_name": "Genesis Land"
        },
        {
           "field_id": 4
           "field_name": "Zebra Land"
        },
        {
           "field_id": 5
           "field_name": "Master Land"
        }
    ]
  },
]
    

Я попробовал models.ManyToManyFields(Field) затем использовал prefetch_related но при проверке выполненного запроса он не выполняет объединение 2 таблиц. и результата не было.

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