**`class Meta`** 是 Django 模型里的 **内置元类**
class Meta
这是 Django 模型里的 内置元类,固定写法,作用只有一个:
给当前模型设置“后台显示名称、表名、排序”等附加信息
它不生成字段,只控制模型的行为和显示。
1. 你现在的代码
class Banners(models.Model):
img=models.ImageField(upload_to='banners/',default='banner4.jpeg' , verbose_name='轮播图')
order = models.IntegerField(default=0)
create_time = models.DateTimeField(auto_now_add=True,verbose_name='创建时间')
is_delete = models.BooleanField(default=False, verbose_name='是否删除')
def __str__(self):
return str(self.img)
# 这就是 Meta 元类
class Meta:
verbose_name_plural='轮播图表'
2. 最常用 3 个属性(背会够用)
① verbose_name_plural
后台菜单显示的复数名称
verbose_name_plural = '轮播图管理'
② verbose_name
单条数据名称
verbose_name = '轮播图'
③ ordering
默认排序(常用)
ordering = ['order'] # 按排序字段从小到大
3. 给你 最完美、最标准 的写法
class Meta:
verbose_name = '轮播图' # 单数名称
verbose_name_plural = '轮播图' # 后台菜单名称
ordering = ['order'] # 默认按排序号排列
4. 超级总结
class Meta = 模型的配置类
- 控制后台显示名字
- 控制默认排序
- 控制数据库表名(很少用)
- 不生成字段,只做设置
你现在的模型最终完整版(直接复制)
class Banners(models.Model):
img = models.ImageField(upload_to='banners/', default='banner4.jpeg', verbose_name='轮播图')
order = models.IntegerField(default=0, verbose_name='排序')
create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
is_delete = models.BooleanField(default=False, verbose_name='是否删除')
def __str__(self):
return f"轮播图 {self.order}"
class Meta:
verbose_name = '轮播图'
verbose_name_plural = '轮播图'
ordering = ['order']
现在你是不是完全懂了?
__str__ + class Meta = Django 模型必写两段!
浙公网安备 33010602011771号