Django Admin面板添加字段名称混淆,如何设置字段清晰显示名称
解决Django Admin字段显示不清晰的操作步骤
要实现Admin面板字段名称清晰可辨,只需要修改模型配置和Admin注册配置两步即可:
步骤1:修改models.py,为字段添加展示名称
你遇到的核心问题有两个:一是字段没有设置自定义展示名称,Admin默认会用字段名直接展示;二是模型的__str__方法返回值为ID,外键下拉选择时只能看到数字,无法分辨对应内容。修改后的模型代码如下:
from django.db import models # Create your models here. class Course(models.Model): # verbose_name参数就是Admin中显示的字段名称 faculty = models.CharField(max_length=100, verbose_name="所属院系") # 修改返回值为实际名称,外键关联时会显示该内容 def __str__(self): return self.faculty class Semester(models.Model): sem = models.CharField(max_length=100, verbose_name="学期") # 这里字段名faculty关联的是Course模型,命名有歧义,也可以修改字段名+verbose_name更清晰 faculty = models.ForeignKey(Course, on_delete=models.CASCADE, verbose_name="对应课程") def __str__(self): # 返回学期+对应课程,方便外键选择时识别 return f"{self.sem} - {self.faculty.faculty}" class Subject(models.Model): faculty = models.ForeignKey(Course, on_delete=models.CASCADE, verbose_name="所属课程") sem = models.ForeignKey(Semester, on_delete=models.CASCADE, verbose_name="所属学期") subject_name = models.CharField(max_length=100, verbose_name="科目名称") def __str__(self): return self.subject_name
注意:如果原字段命名本身就存在歧义(比如Semester里的faculty实际关联的是Course模型),可以直接修改字段名后再搭配verbose_name,后续维护更方便。
步骤2:配置admin.py,注册模型并自定义展示字段
在你的应用目录下找到admin.py(没有就新建一个),添加如下内容:
from django.contrib import admin from .models import Course, Semester, Subject # 自定义Course的Admin展示 @admin.register(Course) class CourseAdmin(admin.ModelAdmin): # 列表页展示的字段 list_display = ['id', 'faculty'] # 编辑/新增页展示的字段 fields = ['faculty'] @admin.register(Semester) class SemesterAdmin(admin.ModelAdmin): list_display = ['id', 'sem', 'faculty'] fields = ['sem', 'faculty'] @admin.register(Subject) class SubjectAdmin(admin.ModelAdmin): list_display = ['id', 'subject_name', 'faculty', 'sem'] fields = ['subject_name', 'faculty', 'sem']
修改完成后执行python manage.py makemigrations和python manage.py migrate更新模型配置,重启服务后进入Admin就能看到所有字段都有清晰的中文名称,外键选择项也会显示实际内容而不是ID。
内容的提问来源于stack exchange,提问作者Ujjwol Neupane
相关产品推荐
相关产品推荐

