0

これら 2 つの戦略のどちらが、ほとんどの django 開発者の間で好まれているかを知りたかったのです。

私はモデルを持っています。「ホットネス」と呼ばれるこれらのモデルを注文したいフィールドがあります。ホットネスは、このモデルの既存のフィールドから計算されます。

したがって、2つのパスは次のとおりです。

 1) Have a field called "hotness" which the models 
    can be easily ordered by.
 2) Have a method called "get_hotness()", which 
    returns the hotness of the instance.

しかし、どちらにも賛否両論があります。

オプション 1 を使用すると、モデル自体が重くなるため、余分なフィールドによって余分なメモリが消費されます。

オプション 2 については、実際には django のモデル メソッドでクエリセットをフィルター処理する方法がないため、おそらくリストに対して操作を行う必要があります。

models = sorted(list(Model.objects.all()), key = lamba x: x.get_hotness())

ただし、リスト操作をもう一度使用すると、単なるクエリと比較してメモリ消費量が増加します。

したがって、誰かがこのようなものの優先ルートを手伝ってくれるなら、アドバイスは素晴らしいでしょう! ありがとうございました。

4

1 に答える 1

1

データ サイズと変化する要件の両方を考慮する必要があります。

辛さの定義が一定期間残っている場合は、選択部分が簡単になるので、辛さフィールドを選択します。

辛さの定義が簡単に変更できる場合は、データベース内の事前に計算された辛さデータを更新する必要がないため、get_hotness() メソッドを使用することをお勧めします。

また、要素全体をホットネスでソートする必要がある場合、Models.object.all() を使用してすべてのデータをメモリにロードすると、メモリ制限を簡単に超える可能性があるため、データ サイズも問題になります。

于 2012-12-29T05:56:04.860 に答える