リクエストのデータに基づいてフォームフィールドの動作を変更する方法は、特にDjango Adminに関連しています。たとえば、リクエストデータ(POSTやセッション変数など)に基づいて、管理者のフィールドを復号化したいとします。リクエストに基づいてDjangoの管理者がto_pythonの出力を変更しました
私はdjango/contrib/admin/options.pyのchange_viewメソッドをオーバーライドしてみることを考えています。これはリクエストにアクセスできるからです。しかし、私はどのようにフィールドの値がフィールドの表示方法に影響するか分からないのは、要求のいくつかの値に依存します。要求に正しい値がある場合は、フィールド値が表示されます。それ以外の場合、フィールド値は "NA"のような値を返します。
私の考えでは、どういうわけかto_python()メソッドにリクエストの値を渡せば、フィールドの表示方法に直接影響する可能性があります。リクエストの値をフォームに渡して、何とかフィールドに入力してみてください。どのように私はこれに近づくかもしれない提案?
読んでいただきありがとうございます。 admin.py
class MyModelAdmin(models.ModelAdmin):
class Meta:
model = MyModel
def change_view(self, request, object_id, extra_context=None):
.... # Perhaps this is where I'd do a lot of overriding?
....
return self.render_change_form(request, context, change=True, obj=obj)
明確にするために、リクエスト内の何かに応じて、(管理者経由で)特定のモデルの特定のフィールドの値を表示したいのですか? –
はい、正しいです。 –
私が明確にすべきもう一つのポイントは、保存された価値を変えたくないということです。その値の表示が変わるだけです。 –