[解決済み] Django admin: データベースフィールドを持たないカスタム list_display フィールドの1つでソートする方法
2022-06-12 02:49:19
質問
# admin.py
class CustomerAdmin(admin.ModelAdmin):
list_display = ('foo', 'number_of_orders')
# models.py
class Order(models.Model):
bar = models.CharField[...]
customer = models.ForeignKey(Customer)
class Customer(models.Model):
foo = models.CharField[...]
def number_of_orders(self):
return u'%s' % Order.objects.filter(customer=self).count()
カスタマーを並べ替えるにはどうしたらよいでしょうか。
number_of_orders
によって分類できますか?
admin_order_field
プロパティは、ソートするためのデータベースフィールドを必要とするため、ここでは使えません。Django はソートを実行するために基礎となる DB に依存しているので、全く可能性がないのでしょうか?注文数を含む集約フィールドを作るのは、ここではやりすぎのような気がします。
面白いことに、この列でソートするためにブラウザでurlを手で変更すると - 予想通りに動作します!
どのように解決するには?
私はこの問題に対するGregの解決策が好きでしたが、管理画面で直接同じことができることを指摘しておきたいと思います。
from django.db import models
class CustomerAdmin(admin.ModelAdmin):
list_display = ('number_of_orders',)
def get_queryset(self, request):
# def queryset(self, request): # For Django <1.6
qs = super(CustomerAdmin, self).get_queryset(request)
# qs = super(CustomerAdmin, self).queryset(request) # For Django <1.6
qs = qs.annotate(models.Count('order'))
return qs
def number_of_orders(self, obj):
return obj.order__count
number_of_orders.admin_order_field = 'order__count'
この方法では、管理画面の中だけにアノテーションを付けることになります。すべてのクエリでアノテーションするわけではありません。
関連
-
Django QuerySet マルチテーブル結合/条件付きピッキング/マージ
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] オブジェクトの属性に基づいてオブジェクトのリストを並べ替えるには?
-
[解決済み] Django の管理者パスワードをリセットする方法は?
-
[解決済み] Django のカスタムフィールドで User モデルを拡張する
-
[解決済み】Django ModelAdmin の "list_display" は ForeignKey フィールドの属性を表示することができますか?
-
[解決済み] RESTful API のトークン認証:トークンは定期的に変更する必要がありますか?
-
[解決済み] Django の DoesNotExist 例外はどのようにインポートしますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
django store to databaseは現地時間より8時間短い?(2021-05-12更新)
-
[解決済み] 保存時に、フィールドが変更されたかどうかを確認するにはどうすればよいですか?
-
[解決済み] Django の修正 管理者の複数形
-
[解決済み] シグナルハンドラは django プロジェクトのどこにあるべきですか?
-
[解決済み] Django Southを使用して移行履歴をリセットするための推奨される方法は何ですか?
-
[解決済み] django で複数のオブジェクトを削除する
-
[解決済み] Django でモデルのフィールドを取得する
-
[解決済み] 学習に適したオープンソースのdjangoプロジェクト【非公開
-
[解決済み] Django の {% url %} テンプレートタグでクエリパラメータを渡すことは可能でしょうか?
-
[解決済み] DjangoでSELECT COUNT(*) GROUP BYとORDER BYを行うにはどうすればよいですか?