自動設定では、models.pyで定義したモデルをデータベーステーブルにすることを知っています。
テーブルではないモデルを定義しようとしています。ユーザーが何かを検索するたびに、APIから取得して構成する動的データを保存する必要があります。このデータはアセンブルする必要があり、ユーザーが終了すると破棄されます。
以前は、これにデータベーステーブルを使用していました。 「Trips.objects.all」などの操作を任意のビューで実行し、それをすべてのテンプレートに渡すことができました。これは、すべて1つのデータソースからのものだからです。モデルのインスタンス化を「保存」できないだけでデータベースに保存できないと聞きましたが、このデータ(1つのビューにまとめたもの)や他の複数のビューにアクセスして、それを操作して表示します。 。 。保存しないとアクセスできません、保存するとデータベースに保存されます(複数のユーザーで同時実行の問題が発生します)
私は本当に辞書/リストを渡したくありません、そして私がしなければならなかった場合、どうやってそれをしたのかさえわかりません。
アイデア?
ありがとう!
別のオプションは、使用することです:
class Meta:
managed = False
Djangoがデータベーステーブルを作成しないようにします。
https://docs.djangoproject.com/en/1.9/ref/models/options/#managed
SQLAlchemyとは異なり、DjangoのORMはデータベースバックエンドのないモデルでのクエリをサポートしていません。
選択できるのは、SQLiteインメモリデータベースの使用、またはDjangoのORMに純粋なインメモリバックエンドを提供する dqms のようなサードパーティアプリケーションの使用に限定されます。
Djangoの cache framework を使用してデータを保存し、ビュー間で共有します。
データをメモリに保存し、別のアプリケーションとなるキャッシュが必要です。
Djangoでは、memcache、データベースバックエンド、redisなどのさまざまなキャッシュバックエンドを使用できます。基本的なクエリ機能と並べ替え機能が必要なため、 Redis をお勧めします。 Redisはパフォーマンスが高く(memcache以下)、データ構造(文字列/ハッシュ/リスト/セット/ソート済みセット)をサポートしています。
Redisはデータベースに置き換わるものではありませんが、データを効率的にクエリするためにキーを準備する必要があるKey-Valueデータベースモデルに適しています。Redisはキーのクエリのみをサポートしているためです。
For example, user 'john.doe' data is: key1 = val1
The key would be - john.doe:data:key1
Now I can query all the data for for this user as - redis.keys("john.doe:data:*")
Redisコマンドは http://redis.io/commands で入手できます。
Django Redisキャッシュバックエンド: https://github.com/sebleier/Django-redis-cache/
データベースまたはファイルベースの sessions を使用してみてください。