Djangoにブログアプリがあるとします。デフォルトの管理者でドラッグ可能なテーブルを使用して投稿を並べ替えるにはどうすればよいですか?
モデルにフィールドを追加する必要がない場合は最適ですが、実際に追加する必要がある場合は追加できます。
Djangoにブログアプリがあるとします。デフォルトの管理者でドラッグ可能なテーブルを使用して投稿を並べ替えるにはどうすればよいですか?
モデルにフィールドを追加する必要がない場合は最適ですが、実際に追加する必要がある場合は追加できます。
これを実行するコードについては、 djangosnippets.orgのスニペット 1053を参照してください。
「モデルにフィールドを追加する必要がないのが最善ですが、本当に必要な場合は追加できます」に注意してください。
申し訳ありませんが、データベース内の情報の順序は情報自体によって決定されます。順序付けのために常に列を追加する必要があります。それについては本当に選択の余地はありません。
さらに、この順序で検索するには.order_by(x)
、クエリに具体的に追加するかordering
、モデルに追加する必要があります。
class InOrder( models.Model ):
position = models.IntegerField()
data = models.TextField()
class Meta:
ordering = [ 'position' ]
追加のフィールドなしでは、順序付けは発生しません。これは、リレーショナルデータベースのルールの1つです。
最近、管理オブジェクトを注文するための素敵なパッケージがあります
https://github.com/iambrandontaylor/django-admin-sortable
また、django-suitにはこれに対するサポートが組み込まれています
モデルクラスでは、特定の順序を維持するために、おそらく「順序」フィールドを追加する必要があります(たとえば、順序= 10のアイテムが最後で、順序= 1が最初のアイテムです)。次に、admin change_listテンプレート(これを参照)にJSコードを追加して、ドラッグアンドドロップ機能を維持できます。最後に、モデルのメタの順序を['order']のようなものに変更します。