首页 > 解决方案 > 根据类别 django 获取数据

问题描述

(任何建议将不胜感激)我有文章的模型,如

class Articles(models.Model):
    restaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE , blank=True, null=True)
    articlename = models.CharField(max_length=50, null=False, blank=False)
    price = models.DecimalField(max_digits=10, decimal_places=2)
    category = models.ForeignKey(Categories, on_delete=models.CASCADE , blank=True, null=True)

现在我想以“每个类别都将以数据库对象形式的所有文章”之类的形式获取数据

例如我有 2 篇文章,1 篇是“article1 有 cat1”,第二篇是“article2 有 cat2” 现在我想获取这样的数据 在 djangodata:[ cat1:[{article1},{}] , cat2:[{article2}] ] 中有没有类似的东西?group by categories直到现在我已经尝试过这段代码

order_article = OrderArticle.objects.filter(order__order_number=id ,order__restaurant=restid) 
        samearticle=[]
        for order_obj in order_article:
            if : #will check if article having cat already been created
                category={}
                category[order_obj.article.category.name]=order_obj
                samearticle.append(order_obj.article.category.name)
            else:
                samearticle[order_obj.article.category.name].append(order_obj)

标签: pythondjangopython-3.x

解决方案


假设您的 Categories 模型有一个名称字段。您实际上可以遍历类别并使用相关对象引用获取所有相关文章

order_article_list = OrderArticle.objects.filter(order__order_number=id ,order__restaurant=restid) 
data = {}
for order_article in order_article_list:
  data[order_article.article.category.name] = order_article.article.category.articles_set.all()

推荐阅读