[解決済み] リスト表示での多対多 Django
2022-10-06 10:15:07
質問
class PurchaseOrder(models.Model):
product = models.ManyToManyField('Product')
vendor = models.ForeignKey('VendorProfile')
dollar_amount = models.FloatField(verbose_name='Price')
class Product(models.Model):
products = models.CharField(max_length=256)
def __unicode__(self):
return self.products
私はそのコードを持っています。残念ながら、エラーはadmin.pyにある
ManyToManyField
class PurchaseOrderAdmin(admin.ModelAdmin):
fields = ['product', 'dollar_amount']
list_display = ('product', 'vendor')
というエラーが出ています。
'PurchaseOrderAdmin.list_display[0]', 'product' はManyToManyFieldです。 であり、サポートされていません。
しかし、私が取るとき、それはコンパイルします
'product'
の外に
list_display
. では、どのようにすれば
'product'
で
list_display
をエラーにしないようにするには?
編集
: より良い質問は、どのようにして
ManyToManyField
で
list_display
?
どのように解決するのですか?
直接できない場合があります。
のドキュメントから
list_display
ManyToManyField フィールドは、テーブルの各行に対して個別の SQL 文を実行する必要があるため、サポートされていません。 なぜなら、テーブルの各行に対して個別の SQL 文を実行する必要があるからです。それでも を実行したい場合は、モデルにカスタムメソッドを作成し、そのメソッド名を list_display に追加してください。 そのメソッドの名前を list_display に追加します。(list_displayのカスタムメソッドの詳細については以下を参照してください。 のカスタムメソッドの詳細を参照してください)。
このようなことができます。
class PurchaseOrderAdmin(admin.ModelAdmin):
fields = ['product', 'dollar_amount']
list_display = ('get_products', 'vendor')
def get_products(self, obj):
return "\n".join([p.products for p in obj.product.all()])
またはモデルメソッドを定義し、それを使う
class PurchaseOrder(models.Model):
product = models.ManyToManyField('Product')
vendor = models.ForeignKey('VendorProfile')
dollar_amount = models.FloatField(verbose_name='Price')
def get_products(self):
return "\n".join([p.products for p in self.product.all()])
で、管理画面では
list_display
list_display = ('get_products', 'vendor')
関連
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] Pythonのキャッシュライブラリはありますか?
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] DataFrameの文字列、dtypeがobjectの場合
-
[解決済み] Pythonです。未束縛のメソッドを束縛する?
-
[解決済み] PythonでSVGからPNGに変換する
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] PyMongoで.sortを使用する
-
[解決済み] オブジェクトのリストに特定の属性値を持つオブジェクトが含まれているかどうかをチェックする
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] if 節の終了方法