【问题标题】:Django: API with accumulated dataDjango:具有累积数据的 API
【发布时间】:2021-06-23 08:54:48
【问题描述】:

我是 python 新手,想用累积的数据实现 API。我已经看到很多关于使用 django rest 框架浏览数据库的可能性的信息,但是我找不到正确的解决方案来查看分析或汇总的数据。

例如,我有一些报纸文章的数据:

articles: [
  {
    name: "test 1",
    views: 10000
  },
  {
    name: "test 2",
    views: 20000
  },
  {
    name: "test 3",
    views: 30000
  }
] 

我想显示分析的数据,例如

summary: {
  name: "articles",
  sum_views: 60000,
  article_count: 3
}

如果我想使用 django 和 django rest 框架,最好的做法是什么?

【问题讨论】:

  • 这能回答你的问题吗? Django SUM Query?
  • 部分...我应该把它放在哪里。我必须在模型中创建一个新类还是应该将它放在视图中?

标签: python-3.x django django-rest-framework


【解决方案1】:

将其放在views.py 中并覆盖get_queryset 方法。

class MyViewSet(viewsets.ModelViewSet):

    queryset = MyModel.objects.all()
    serializer_class = MySerializer

    def get_queryset(self):
        # filter your query set here and return a queryset (not an object)
        return queryset

这必须是@Tom Wojcik 的评论,但我没有足够的声誉来发表评论。

【讨论】:

    【解决方案2】:

    如果文章资源路由是“/article/”,那么摘要可能是“/article/summary/”

    【讨论】:

      【解决方案3】:

      我用 SQL 解决了这个问题。我创建了累积的 MySQL-View,可以以通常的 Django 方式看到。因为 MySQL-View 创建完成后,你可以在 Django 中编写一个模型并创建一个 Django-view。

      为了使 MySQL 视图独立于系统,我在名为“db_views.py”的类中编写了一个 MySQL 创建脚本,该脚本在 apps.py 文件中进行了实例化

      class ArticlesConfig(AppConfig):
          """Standard config module"""
          name = 'articles'
      
          def ready(self):
              """Config method if application is ready"""
              post_migrate.connect(create_view, sender=self)
      

      【讨论】:

        猜你喜欢
        • 2019-10-11
        • 1970-01-01
        • 1970-01-01
        • 2018-07-04
        • 1970-01-01
        • 1970-01-01
        • 2018-05-13
        • 2019-09-14
        • 1970-01-01
        相关资源
        最近更新 更多