七 Django模型元选项

2019-02-20  本文已影响10人  唯老

元选项(非必须)

数据库元数据就是指定义数据库各类对象结构的数据,是表级操作

1、abstract

  1. 说明

    表示模型是抽象基类

  2. 可选值

    • True

      表示模型是抽象基类

    • false

      默认值

  3. 示例代码

    class UserInfo(models.Model):
        username = models.CharField(max_length=64)
        class Meta:
            abstract = True
         
    class Person(models.Model):
        class Meta:
            abstract = True        
    

2、db_table

  1. 说明

    数据库表名,默认是模块名+类名,强烈建议你在通过 db_table 重命名数据库表名称时,使用小写字母特别是当你在使用 MySQL 作为后台数据库时

  2. 可选值

    字符串

  3. 示例代码

    class UserInfo(models.Model):
        class Meta:
            abstract = True
            db_table = 'user_info'
    

3、ordering

  1. 说明

    对象默认的顺序,获取一个对象的列表时使用 它是一个字符串的列表或元组

  2. 可选值

    前面没有“-”的字段表示升序

    "-" 前面带有可选的“-”前缀表示降序

    "?" 表示随机排序

  3. 示例代码

    class UserInfo(models.Model):
         class Meta:
             #按create_date降序排序,然后按username升序排序
             ordering = ['-create_date','username']
    

4、indexes

  1. 说明

    在模型上定义的索引列表(Django 1.11新增功能)

  2. 可选值

    列表

  3. 示例代码

    class UserInfo(models.Model):
        class Meta:
            indexes = [models.Index(fields=['name', ], name='idx_user_name')]
    

6、verbose_name

  1. 说明

    Admin后台中显示的模型名称

  2. 可选值

    中文

  3. 示例代码

    class UserInfo(models.Model):
      class Meta:  
            # 单数
            verbose_name = '用户'
    

7、verbose_name_plural

  1. 说明

    verbose_name复数形式,英语有单数和复数形式。这个就是模型对象的复数名,比如“apples”。因为我们中文通常不区分单复数,所以保持和verbose_name一致也可以。

  2. 可选值

    中文

  3. 示例代码

    class UserInfo(models.Model): 
      class Meta:  
            # 复数
            verbose_name_plural = verbose_name
    

8、managed

  1. 说明

    该元数据默认值为True,表示Django将按照既定的规则,管理数据库表的生命周期。

    如果设置为False,将不会针对当前模型创建和删除数据库表。在某些场景下,这可能有用,但更多时候,你可以忘记该选项。

  2. 示例代码

    class UserInfo(models.Model): 
      class Meta: 
            managed = Flase
    

9、其它(了解)

  1. base_manager_name,

    指定managers的名字。

  2. db_tablespace,

    指定表格空间,如果数据库不支持则忽略。

  3. default_manger_name,

    指定manager的名字。

  4. default_related_name

    指定反向关联的模型的名称,需要注意的是,这个名称应该是唯一的,建议命名中包含app和model名字以避免冲突,%(app_label)s和%(model_name)s

  5. get_latest_by

    指定model中某个可排序的字段的名称,这样当通过managers去调用lates函数的时候会返回根据排序的最新的结果。

  6. managed

    是否指明Django为当前模型创建和删除数据库表,True或者False。

  7. order_with_respect_to,

    通常用在关联对象上面,指定某个字段,使其在父对象中有序。设置之后,可以通过get_RELATED_order和set_RELATED_order进行获取关联对象的已经拍好序的主键列表或者是自定义设置其顺序。我们还可以通过get_next_in_order和get_previous_in_order,可以用于获取一个生成器。

  8. permissions

    设置创建对象时权限表中额外的权限,注意其是一个二元祖的元祖或者列表。

  9. default_permissions,

    默认为 add,change,delete。

  10. proxy

    如果为True,则表明这是另外一个模型的子类,这将会作为一个代理模型。

  11. required_db_features,

  12. required_db_vendor

    指定使用哪种数据库。

  13. select_on_save

    指定使用哪种保存数据的算法。

  14. unique_together

    用来设置不重复的字段组合。

上一篇 下一篇

猜你喜欢

热点阅读