質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

解決済

Djangoにて、売り上げ前日比を算出し、伸比が多い順に並び替えができません。

HiroUchi
HiroUchi

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1回答

0評価

1クリップ

1305閲覧

投稿2019/02/09 12:51

編集2022/01/12 10:58

そこで以下のことを実現させてたいのですが、現在わかっておりません。
恐れ入りますが、力添えをいただけますと幸いです。

■質問内容
Djangoにて、以下のように商品管理のテーブルと、商品の日毎の売上のテーブルを作っております。
単純に、特定の日の売り上げ順や、日付順につきましては、view.pyに記載して、テンプレートに渡し表示はできるのですが、
前日比を算出し、売上伸比順や、順位を表示させる方法が、どのようにしたらよいかわかっておりません。

なお、特定の日の商品の売り上げ順を表示させている時、1位 2位と表示させているのですが、その手法を、現在「{{forloop.counter}}位」
としております。この場合、商品を全部表示させている場合はよいのですが、各商品の詳細ページに飛んだ際、順位を出すことができません。
適切な方法がございましたら、教示いただけますと幸いです。

Django

■ models.py class Product(models.Model): name = models.CharField(verbose_name='商品名', max_length=300) created_at = models.DateTimeField(verbose_name='登録日', default=now) class Sales(models.Model):   product = models.ForeignKey( Product, verbose_name=u'商品名', on_delete=models.PROTECT, null=True )   sales_q = models.IntegerField(verbose_name='売上個数', default=0)   sales_at = models.DateField(verbose_name='日時', default=now)   

単純に特定の日にちの売り上げ順の場合ですと、以下のビューをテンプレートにてfor文で
1つずつ表示させています。

Django

■view.py from django.views.generic import ListView import datetime today = datetime.date.today() class ProductList(ListView): model = Sales template_name = 'products/sales_list.html' def get_queryset(self): queryset = Sales.objects.filter( product_at=today ).order_by('-sales_q') return queryset

■商品テーブル

IDname
1PC
2テレビ
3洗濯機
4掃除機

■売上テーブル

IDproduct_idsales_qsales_at
1p1102019-01-05
2p1152019-01-06
3p252019-01-05
4p2152019-01-06
5p382019-01-05
6p3242019-01-06
7p492019-01-05
8p4182019-01-06

■実現したいこと

▼売上の伸比順


1位 洗濯機 売上:24個 前日比+16


2位 PC 売上:15個 前日比+10


3位 掃除機 売上:18個 前日比+9


4位 テレビ 売上:15個 前日比+5


良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。