Как группировать с помощью Django - PullRequest
2 голосов
/ 26 сентября 2019

Я пытаюсь сгруппировать, используя Django.

У меня есть три модели следующим образом:

class Tutorial(models.Model):
    name = models.CharField(max_length=200, unique=True, blank=False, null=False)

class Category(models.Model):
    name = models.CharField(max_length=200, unique=True, blank=False, null=False)
    tutorial = models.ForeignKey(Tutorial, on_delete=models.DO_NOTHING, null=False)

class Video(models.Model):
    name = models.CharField(max_length=200, unique=True, blank=False, null=False)
    tutorial = models.ForeignKey(Tutorial, on_delete=models.DO_NOTHING, blank=False, null=False)
    category = models.ForeignKey(Category, on_delete=models.DO_NOTHING, blank=False, null=False)

На мой взгляд, у меня есть что-то следующее:

@login_required
def player(request):
    tutorial_id = request.POST.get('id', None)
    videos = Video.objects.filter(tutorial=tutorial_id).values("name", "category__name")

С этим в videos я получаю:

[{'name': 'video1', 'category__name': 'category1'}, {'name': 'video2', 'category__name': 'category1'}, {'name': 'video4', 'category__name': 'category2'}]

Но результат, который я хочу получить:

[
{'category': 'category1', 'videos': [{'name': 'video1}, {'name': 'video2'}]},
{'category': 'category2', 'videos': [{'name': 'video4}]},
]

Есть идеи, как это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...