如何修改Django中StackedInline内的记录标题?
Django后台StackedInline记录标题修改/移除方案
方法一:重写get_inline_heading方法(Django 3.2+)
Django 3.2及以上版本为InlineModelAdmin提供了get_inline_heading方法,专门用于生成每条inline记录的标题,直接重写即可实现修改或移除:
修改标题
from django.contrib import admin class YourStackedInline(admin.StackedInline): model = YourModel # 其他配置项... def get_inline_heading(self, instance): # 自定义标题,比如用对象的某个字段值 return f"自定义标题: {instance.your_field}" # 也可以写固定文本 # return "我的专属标题"
移除标题
直接返回空字符串即可:
def get_inline_heading(self, instance): return ""
方法二:重写模型的__str__方法(全版本通用)
如果标题默认使用模型对象__str__方法的返回值,修改这个方法就能间接调整标题内容:
class YourModel(models.Model): # 模型字段定义... def __str__(self): # 返回你想要的内容,替换默认的对象标识 return self.your_field_name
注意:这种方法会影响所有用到__str__的地方,比如Admin列表页,按需选择。
方法三:自定义Inline模板(无版本限制)
要是上面的方法都不适用,就自定义Inline模板来去掉标题:
- 把Django默认的
admin/edit_inline/stacked.html模板复制到你项目的模板目录里 - 找到带标题的代码块(一般是
<h3>标签那段),删掉或者修改 - 在Inline类里指定这个自定义模板:
class YourStackedInline(admin.StackedInline): model = YourModel template = "admin/your_app/your_custom_stacked.html"
内容的提问来源于stack exchange,提问作者RunLoop
相关产品推荐
相关产品推荐

