0

フォームまたは静的データへのカスタム フィールドについて話しているのではなく、実際に独自のコードを持つセクションを追加することについて話しているのです。フィールドセットの新しいエントリのようなものですが、新しいフィールドではなく、ユーザーのアクティビティに関するいくつかの小さなレポートが導入されます。

実際、この質問はモデルの変更ページを表しています。Django のドキュメントには、このページのテンプレートを上書きする方法が示されていますが、Python コードを追加しなくても何のメリットがあるでしょうか?

4

2 に答える 2

1

デフォルトのテンプレートとデフォルトのビューをオーバーライドできます。

Django には、管理者レコードを表示するための 2 つの異なるビューとテンプレートがあります。1 つは新しいものを作成するためのもので、もう 1 つは既存のものを表示して編集するためのものです。関連するメソッドは次のとおりです。

これは、関連するオーバーライド ビューを準備する方法の例です ( [ビューの追加/変更]リンクから取得) 。

class MyModelAdmin(admin.ModelAdmin):

    # A template for a very customized change view:
    change_form_template = 'admin/myapp/extras/openstreetmap_change_form.html'

    def get_osm_info(self):
        # ...
        pass

    def change_view(self, request, object_id, form_url='', extra_context=None):
        extra_context = extra_context or {}
        extra_context['osm_data'] = self.get_osm_info()
        return super(MyModelAdmin, self).change_view(request, object_id,
            form_url, extra_context=extra_context)

カスタム テンプレートを準備する方法を確認するには、デフォルトの django の追加と変更のテンプレートを django ソース コードから確認する必要があります (新しいテンプレートとしてコピーし、後で編集することもできます)。

最後に、django テンプレートを編集したり、ソースからコードを直接表示したりしないでください。これらはさまざまなアプリケーションで使用されており、django ソース コードを更新すると、編集内容が上書きされたり、問題が発生したりする可能性があるためです。

于 2012-11-03T14:57:38.463 に答える
0

Django admin は、テンプレートをオーバーライドするだけでなく、非常に拡張可能です。

ドキュメントのModelAdmin メソッドのセクションを確認してください。ModelAdmin のほとんどすべての動作を変更できます。

ModelAdmin にアタッチされたモデルのカスタム フォームは、別の (ほとんどの場合、より深い) レベルのカスタマイズを提供するため、カスタム フォームの検証ModelFormsのドキュメントも参照する必要があります。

于 2012-11-03T15:00:53.667 に答える