11

Djangoにブログアプリがあるとします。デフォルトの管理者でドラッグ可能なテーブルを使用して投稿を並べ替えるにはどうすればよいですか?

モデルにフィールドを追加する必要がない場合は最適ですが、実際に追加する必要がある場合は追加できます。

4

6 に答える 6

6

これを実行するコードについては、 djangosnippets.orgのスニペット 1053を参照してください。

于 2008-09-21T13:59:59.357 に答える
4

「モデルにフィールドを追加する必要がないのが最善ですが、本当に必要な場合は追加できます」に注意してください。

申し訳ありませんが、データベース内の情報の順序は情報自体によって決定されます。順序付けのために常に列を追加する必要があります。それについては本当に選択の余地はありません。

さらに、この順序で検索するには.order_by(x)、クエリに具体的に追加するかordering、モデルに追加する必要があります。

class InOrder( models.Model ):
    position = models.IntegerField()
    data = models.TextField()
    class Meta:
        ordering = [ 'position' ]

追加のフィールドなしでは、順序付けは発生しません。これは、リレーショナルデータベースのルールの1つです。

于 2008-09-21T11:49:27.470 に答える
3

最近、管理オブジェクトを注文するための素敵なパッケージがあります

https://github.com/iambrandontaylor/django-admin-sortable

また、django-suitにはこれに対するサポートが組み込まれています

于 2013-05-02T08:13:16.737 に答える
1

モデルクラスでは、特定の順序を維持するために、おそらく「順序」フィールドを追加する必要があります(たとえば、順序= 10のアイテムが最後で、順序= 1が最初のアイテムです)。次に、admin change_listテンプレート(これを参照)にJSコードを追加して、ドラッグアンドドロップ機能を維持できます。最後に、モデルのメタの順序を['order']のようなものに変更します。

于 2008-09-21T11:15:01.877 に答える