Как создать вложенный словарь из двух связанных моделей в 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')
]
Но я не могу сгруппировать по годам во внешнем словаре. Заранее спасибо!