Как объединить два набора запросов по определенному столбцу

Здравствуйте, я использую базу данных postgres в своем приложении django.

У меня эта модель:

class MyFile(models.Model):
    uuid = models.UUIDField(
        default=python_uuid.uuid4,
        editable=False,
        unique=True)
    file = models.FileField(upload_to=upload_to, null=True, blank=True)
    path =  models.CharField(max_length=200)
    status = models.ManyToManyField(Device, through='FileStatus')
    user = models.ForeignKey('users.User', on_delete=models.SET_NULL, null=True, blank=True)
    when = models.DateTimeField(auto_now_add=True)
    canceled = models.BooleanField(default=False)
    group = models.UUIDField(
        default=python_uuid.uuid4,
        editable=False)

Я хочу сгруппировать MyFile по группам, получить все данные + список файлов, связанных с ними.

Мне удалось получить группу, связанную со списком файлов с:

MyFile.objects.all().values('group').annotate(file=ArrayAgg('file', ordering='-when'))

что дает мне результат типа:

[{'group': 'toto', 'file':['file1', file2']}, ...]

>

Я также могу получить все мои данные MyFile с помощью:

MyFile.objects.all().distinct('group')

Я хочу получить результат типа:

[{'group': 'toto', 'file':['file1', file2'], 'when': 'ok', 'path': 'ok', 'user': 'ok', 'status': [], canceled: False}, ...]

Поэтому я пытался объединить два моих набора запросов в колонке group, но это не работает.

Есть идеи?

Попробуйте это, если это работает

MyFile.objects.values('group').annotate(file=ArrayAgg('file', ordering='-when'))
Вернуться на верх