Как создать вложенный словарь из двух связанных моделей в Django?

Я хочу создать словарь в формате ;

        {
            "2021": [
                {
                    "name": "John Doe",
                    "date": "01.01.2021",
                    "items": "item1"
                }
            ],
            "2020": [
                {
                    "name": "Jane Doe",
                    "date": None,
                    "items": "item2"
                },
                {
                    "name": "Jack Doe",
                    "date": None,
                    "items": "item3"
                }
            ],
            "2019": [
                {
                    "Name": "James Doe",
                    "date": None,
                    "items": ["item1",
                                    "item2",
                                    "item3",
                                    "item4"]
                },
            ]
        }
    ]

У меня есть две модели;

class Persons(models.Model):
    name= models.CharField(max_length=200)
    date= models.DateTimeField(null=True, blank=True)
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.name

class PersonItems(models.Model):
    person= models.ForeignKey(Persons, on_delete=models.CASCADE, related_name='urls')
    items= models.URLField()
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now_add=True)

Я должен получить данные из этих моделей. Я очень запутался и не могу сделать это правильно. Код, который я пробовал;

data = [{
        (persons.date).strftime('%Y'): [{
            "name": per.name,
            "date": (per.date).strftime('%m/%d/%Y'),
            "items": per.urls.filter(person=per)
        } for per in Persons.objects.filter(date__year=(person.date).strftime('%Y'))]
    }
        for person in Persons.objects.all().order_by('-date')
    ]

Но я не могу сгруппировать по годам во внешнем словаре. Заранее спасибо!

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