You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Django Admin模型列名改为Name、Email、Number?

Django Admin列表列标题自定义方案

你的需求是把Admin列表中的列标题从cn_name、cn_email、cn_number改为Name、Email、Number,现有代码存在两处问题:一是自定义的cn_name方法返回的是整个对象而非字段值,二是未处理另外两个字段的标题。以下是两种可行的解决方法:

方法一:在Admin类中自定义字段显示(无需修改模型)

直接在ContactAdmin类中为每个字段创建对应方法,用@admin.display(description)指定列标题,返回对应字段的值:

from django.contrib import admin
from .models import contactEnquiries

class ContactAdmin(admin.ModelAdmin):
    # 使用自定义方法作为列表显示项
    list_display = ['get_name', 'get_email', 'get_number']

    @admin.display(description='Name')
    def get_name(self, obj):
        return obj.cn_name

    @admin.display(description='Email')
    def get_email(self, obj):
        return obj.cn_email

    @admin.display(description='Number')
    def get_number(self, obj):
        return obj.cn_number

admin.site.register(contactEnquiries, ContactAdmin)

方法二:修改模型字段的verbose_name(更简洁)

如果允许修改模型,直接给每个字段添加verbose_name参数,Django Admin会自动将其作为列标题,无需改动Admin类的核心代码:

models.py 修改内容:

from django.db import models

class contactEnquiries(models.Model):
    cn_name = models.CharField(max_length=100, verbose_name='Name')
    cn_email = models.EmailField(verbose_name='Email')
    cn_number = models.CharField(max_length=20, verbose_name='Number')
    # 其他字段及方法...

    def __str__(self):
        return self.cn_name

admin.py 保持简洁:

from django.contrib import admin
from .models import contactEnquiries

class ContactAdmin(admin.ModelAdmin):
    list_display = ['cn_name', 'cn_email', 'cn_number']

admin.site.register(contactEnquiries, ContactAdmin)

两种方法都能实现你的需求,方法二更简洁且符合Django的设计规范,推荐优先使用。

内容的提问来源于stack exchange,提问作者Libin Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 11:03:15