0

Django管理者変更リストビューのクエリセットを、order_timeとstatusの2つの異なる要素で並べ替える必要があります。

item.status == 3ソートするとき、結果のクエリセットは、リストの下部に()があるすべてのアイテムでorder_timeを減らすことによって順序付けられる必要があります。基本的に、完了したすべての注文を、に関係なくリストの一番下にプッシュしようとしていorder_timeます。

モデルは次のようになります。

def Order(models.Model);
  order_time = models.DateTimeField(null=True)
  status = models.PositiveSmallIntegerField(choices=ORDER_STATUS, default=ORDER_RECEIVED)

クエリセットをitertools.chainと組み合わせるのをいじりましたが、djangoの変更リストビューに対してこれを行っているので、クエリセットを返す必要があります。

これにマネージャーを利用できますか?または、それに応じてqsを事前注文するカスタムSQLを実行する方法はありますか?

注文クエリセットがどのように表示されるかの例を次に示します。

ORDER ORDER_TIME STATUS
  3 12/3 2
  8 12/5 2
  1 12/6 1
  7 12/2 3
  10 11/12 3
4

2 に答える 2

4

選択肢のモデルを作ってみませんか。

def Status(models.Model):
    # You could put in an 'id' or 'code' field to match up to your current status codes properly
    value = models.CharField(max_length=20)
    importance = models.IntegerField()

次に、モデルを次のように変更します。

class Order(models.Model);
    order_time = models.DateTimeField(null=True)
    status = models.ForeignKey('Status')

    class Meta:
        ordering = ('status__importance', 'order_time')

ステータスモデルを作成し、必要に応じて重要度フィールドを設定します。この例では、ステータス1と2の重要度を等しく(例:5)、ステータス3の重要度を「重い」(例:10)に設定します。これにより、重要度、次に時間で順序がグループ化されるため、同じ重要度のステータスがグループ化されます。

于 2013-01-06T00:23:20.240 に答える
0

モデルのメタオプションには、次のようなオプションが含まれています。ordering

class Order(models.Model);
    order_time = models.DateTimeField(null=True)
    status = models.PositiveSmallIntegerField(choices=ORDER_STATUS, default=ORDER_RECEIVED)

    class Meta:
        ordering = ('status', 'order_time')
于 2013-01-05T23:05:22.830 に答える