Получить список внутри аннотации в Django ORM - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть 3 таблицы: -

 class Profile(models.Model):
       id = models.AutoField(primary_key=True)
       name = models.CharField()
       .....
       #some more field
       .....

class ProfileTestMapping(models.Model):
         id = models.AutoField(primary_key=True)
         profile = models.ForeignKey(Profile)
         test = models.ForeignKey(Test)
         .....
         #some more field
         ....

class Test(models.Model):
         id = models.AutoField(primary_key=True)
         name = models.CharField()
        .....
         #some more field
         ....

1 профиль имеет много тестов.Поэтому я хочу получить такие данные: -

This is a raw array I am writing for the example purpose. 
profileList = [

    {
        profileName: 'any-name',
        ......
        otherProfileDetails
        .......
        testList: [
         {
            name: testName,
            id: 463743
         },
         {
            name: testName2,
            id: 463743
         }
        ]
     }
]

Я получаю count теста, сопоставленного с профилем, используя annotate, но не получаю детали теста, сопоставленные спрофиль.

ОБНОВЛЕНО: - Текущий запрос Я получаю номер счета, но не список отображенных тестовых данных: -

Profile.objects.filter(isDisable=0).value('id', 'name').annotate(
  testCount = Count('profiletestmapping__test_id')
  testList = //Unable to get list of related data
)

1 Ответ

0 голосов
/ 07 декабря 2018

Вы можете использовать prefetch_related , чтобы присоединиться ко всем тестам при выборе профиля.

Profile.objects.prefetch_related(
'ProfileTestMapping_set__test'
).all()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...