Suppose that I have models like these:
models.py
class Category(models.Model):
name = models.CharField(max_length=70, verbose_name='Name')
order_num = models.IntegerField(verbose_name='Order Number')
class Advertisement_Type(models.Model):
name = models.CharField(max_length=70, verbose_name='Name')
ad_category = models.ManyToManyField(Category, verbose_name='Ad Category')
class Advertisement(models.Model):
title = models.CharField(max_length=70, verbose_name='Title')
ad_type = models.ForeignKey(Advertisement_Type, on_delete=models.CASCADE, verbose_name='Advertisement Type')
How can I retrieve advertisement by category and advertisement type in such format by using filters only? Is this possible? Because the only way I can think of is querying everything and then building the dictionary/JSON manually through a number of for-loops and if-else which I would like to avoid.
Expected format/output
advertisement_type: {
name: 'Type 1',
category: {'Health', 'Engineering'},
advertisement: {ads1, ads2, ads3}, # Can these be objects?
},
advertisement_type: {
name: 'Type 2',
category: {'Math', 'Numbers'},
advertisement: {ads4, ads5, ads6}, # Can these be objects?
}
Thank you!