Как объединить два набора запросов по определенному столбцу
Здравствуйте, я использую базу данных 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'))