我想覆盖ModelChoiceField模板。我有一个类别模型,其中包含名称和深度等属性 - 类别是嵌套的,深度告诉我给定类别的树有多深。我想要做的是按深度缩进类别名称,所以如果我有两个类别 - 深度2和4,那么我想在选择框中用2和4个空格缩进它们的名字。我该怎么办?
答案 0 :(得分: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)