**`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 模型必写两段

posted @ 2026-05-21 16:10  ham0921  阅读(11)  评论(0)    收藏  举报