元选项(Meta_name)

元选项
  • 说明:
    Django中的数据表命名: 应用名小写_模型类名小写

    这就造成一旦应用名发生了改变后,数据表的名字就会发生改变
    所以在django中可以指定表明,无论应用名发生什么改变都不会影响数据表的命名

    这称之为元选项 :
    只需要在模型类中定义一个元类Meta,在里面添加属性db_table就可以指定表名。
    在这里插入图片描述

  • 代码实现

    # 创建书籍类
    class Book(models.Model):
       book_id = models.AutoField(primary_key=True)
       book_name = models.CharField(max_length=20)
       book_add = models.CharField(max_length=10)
    
       # 自定义管理器对象
       supervisor = BookInforManage()
       # 添加原选项
       class Meta:
           db_table = 'bookinfor' #指定模型类的表名
    

    值得注意的就是这个类直接加在模型类后面的。
    将文件迁移成功后
    查看数据库中的表的名字
    在这里插入图片描述
    原来的bookimfor_book变成了bookinfor。 无论应用名字怎么改变,都不会影响数据库中表的名字

    这个就是元选项。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,在 Django 中使用 MongoDB 需要使用第三方库 `djongo`,可以通过 pip 安装: ``` pip install djongo ``` 接下来,可以先定义两个模型 `Author` 和 `Book`: ```python from django.db import models class Author(models.Model): name = models.CharField(max_length=100, verbose_name='姓名') age = models.IntegerField(verbose_name='年龄') email = models.EmailField(verbose_name='邮箱') gender = models.CharField(max_length=10, verbose_name='性别') class Meta: verbose_name = '作者' verbose_name_plural = '作者' def __str__(self): return self.name class Book(models.Model): title = models.CharField(max_length=200, verbose_name='书名') price = models.DecimalField(max_digits=8, decimal_places=2, verbose_name='价格') author = models.ForeignKey(Author, on_delete=models.CASCADE, verbose_name='作者') class Meta: verbose_name = '书' verbose_name_plural = '书' def __str__(self): return self.title ``` 接着,在 `admin.py` 中注册 `Author` 模型,可以设置 `list_display`、`search_fields`、`list_filter`、`ordering`、`list_per_page` 等选项: ```python from django.contrib import admin from .models import Author, Book class AuthorAdmin(admin.ModelAdmin): list_display = ('name', 'email') search_fields = ('name', 'email') list_filter = ('age',) ordering = ('email',) list_per_page = 30 fieldsets = [ ('Main', {'fields': ('name', 'email')}), ('Advance', {'fields': ('age', 'gender')}), ] inlines = [BookInline] class BookInline(admin.TabularInline): model = Book extra = 1 admin.site.register(Author, AuthorAdmin) admin.site.register(Book) ``` 以上代码中,`list_display` 定义要显示的字段,`search_fields` 定义可搜索的字段,`list_filter` 定义可过滤的字段,`ordering` 定义默认排序字段,`list_per_page` 定义每页显示的记录数。`fieldsets` 定义字段分组,`inline` 定义内联显示的模型。 最后,在 `settings.py` 中配置 MongoDB 数据库信息: ```python DATABASES = { 'default': { 'ENGINE': 'djongo', 'NAME': 'mydb', 'HOST': 'localhost', 'PORT': 27017, 'USER': '', 'PASSWORD': '', 'AUTH_SOURCE': 'admin', 'AUTH_MECHANISM': 'SCRAM-SHA-1', } } ``` 然后运行 Django 服务,就可以在后台管理页面中看到 `Author` 和 `Book` 的模型表,以及根据 `AuthorAdmin` 中定义的选项设置 `Author` 表格的显示和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值