取り敢えず、動かして色々弄ってみるベンチが出来たいので、現在PHPで作って使用している、自宅の環境モニターの表示アプリ(定期的に何か所かの温度、湿度を自動的にサーバー
のDBにあげておき、必要に応じてDBから抽出、aggregationして時間毎、日毎、月毎のデータとしてグラフで表示させる)をDjangoに移行させてみました。
1)DBのVIEWの扱い DjangoではDB派のアクセスとしてORM(object-relational-mapping)が提供されていますが、これが今一使い難い。 例えば、夫々の地点から、温度、湿度、気圧を定期的に送っているので、データは、(場所、時間、温度、湿度、気圧)がひとまとまりのデータしてDBに存在しています。 従って、時間毎の最高、最低、平均等の所謂aggregationはDBのVIEWの様に一気に計算して欲しいのですが、ORMではこれはちょっと無理みたい。 なので、DBのVIEWでaggregationのビューを作って、これを参照するmodelを作る方法を取りました。
class Meta: managed=FalseでDBのVIEWを参照できるみたいです。
>adminで表示されるこのテーブルの内容を弄るとどうなるのかは未確認
2)抽出したデータの表示 直近の場所毎の温度、湿度を表示するテーブルへのデータの送信は直近のデータを表示するDBのVIEW(Up2dateData.sql)を呼ぶclassでwxmonitor_testpage.htmlをtemplateに指定して、表示させてみました。 これは問題なくすんなりOK
models.py |
3)aggregareデータのグラフ 取り敢えず、一日の時間毎の最高、最低、平均温度、平均湿度をDB VIEWのdailydatatoday.sqlから参照するclassをTodayData(models.Model)を作成。 これから、場所のフィルタを噛ませて、特定の場所のデータ(最高、最低、平均)を取得して、templateに送るviewを def dailydata(request)を作成
wxmonitor_test.htmlで送られたデータをテーブルに表示することはできましたが、phpで使用しているcanvasjsで表示させようとすると、全く何も表示されずここで頓挫。
views.py |
canvasjsとdjangoの組み合わせでサンプルアプリをググって、ココやココなど見ながら、canvasjsでグラフが表示できるか確認してみますが、何故かどれもダメ。 現時点でDjangoとcanvasjsとの組み合わせをうまく動作させることが出来ずに、頭を抱えています。
因みに、index.htmlに適当なグラフのサンプルのソースをcanvasjsのページから持って来て表示させるとちゃんと表示してくれます。 例えば、JavaScript Dynamic / Live Multi Series Chart をindex.htmlにして、djangoで呼び出してやると問題なく表示されているので、ここら辺から、問題点を探し出してゆくことにしようと思います。
ちょっと長期戦の予感、、、、
0 件のコメント:
コメントを投稿