0

我想覆盖 ModelChoiceField 模板。我有一个具有名称和深度等属性的类别模型 - 类别是嵌套的,深度告诉我给定类别的树有多深。我要做的是按深度缩进类别名称,所以如果我有两个类别 - 深度 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 回答