奇妙な要件が発生しました...
次のようなモデルがあるとします。
class MyModel(models.Model):
priority = models.IntegerField()
time = models.DateTimeField()
私たちが持っていると仮定します:
by_time = MyModel.objects.order_by('time')
by_prio = MyModel.objects.order_by('priority')
アイテムを交互の並べ替え順序で表示する必要があります。たとえば、1 つの項目を時間で並べ替え、1 つの項目を優先度で並べ替え、次の項目を時間で並べ替えるなど... 各項目はリスト内で一意である必要があります (2 つのリストを結合して 2 倍の長さのリストにすることはできません)。
どうすればそのようなことを実装し、比較的効率的に保つことができますか?
編集: いくつかのメモ:
- 終了リストの項目は一意でなければならないため、2 つのリストをマージすることはできません。
- リストをマージして後で重複を削除すると、並べ替え順序が台無しになります (たとえば、2 つの隣接する値が同じ順序であるなど)。