假设我有这样的模型:
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')
如何仅使用过滤器以这种格式按类别和广告类型检索广告?这可能吗?因为我能想到的唯一方法是查询所有内容,然后通过许多我想避免的for循环和if-else手动构建字典/ JSON。
期望的格式/输出
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?
}
谢谢!
答案 0 :(得分:0)
要获取模型的相关对象,可以使用prefetch_related,该work具有 ManyToMany 关系。
在示例getAnswers(event) {
if (event.target.checked) {
console.log('checked: ' + event.target.id);
} else {
console.log('unchecked: ' + event.target.id);
}
}
,ads_types
,ad_category
中是QuerySet,因此它们返回对象列表并且也可以被过滤。
advertisement_set
或者您可以检查Django Rest Framework serializers for related objects以获得json对象表示以及相关性。
您还可以通过添加related_name选项来改进ManyToMany字段。