Django:如何使用多对多关系过滤数据

问题描述 投票:0回答:1

假设我有这样的模型:

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?
}

谢谢!

假设我有这样的模型:models.py类Category(models.Model):name = models.CharField(max_length = 70,verbose_name ='Name')order_num = models.IntegerField(verbose_name ='Order ...

django django-models django-orm
1个回答
0
投票

要获取模型的相关对象,可以使用prefetch_related,该work可以具有[[ManyToMany

关系。
© www.soinside.com 2019 - 2024. All rights reserved.