0

ModelChoiceField テンプレートをオーバーライドしたいと思います。名前や深さなどの属性を持つカテゴリ モデルがあります。カテゴリはネストされており、深さは、指定されたカテゴリがツリーにどのくらい深いかを示します。私がやろうとしているのは、カテゴリ名を深さでインデントすることです。したがって、2 つのカテゴリ (深さ 2 と 4) がある場合、選択ボックスでそれらの名前を 2 と 4 のスペースでインデントしたいと思います。どうすればいいですか?

4

1 に答える 1

1

django mpttを検討しましたか?

ネストされた素敵なウィジェットを含む、ツリーデータを処理するためのヘルパーを多数追加します

それ以外の場合は、過去にこのようなものを使用したと思います(古いコードベースからコピーされたため、機能させるには微調整が必​​要になる場合があります。また、django 1.2用に作成されたため、おそらく更新が必要だと思います)

class MyChoiceField(forms.ModelChoiceField):
    def label_from_instance(self, obj):
        return my_fun(obj)

class MyModelAdmin(admin.ModelAdmin):
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == "my_field":
            kwargs["form_class"] = MyChoiceField
            return db_field.formfield(**kwargs)
        return super(MyModelAdmin, self).formfield_for_foreignkey(
            db_field, request, **kwargs)
于 2012-11-18T10:53:51.513 に答える