zoukankan      html  css  js  c++  java
  • ORM中的部分参数的作用

    ORM中的部分参数的作用

    字段参数

    Meta参数

    class A(models):
        pass
    	class Meta:
    	    managed = False
    		db_table = '自己定义的表名'
    

    managed
      由于Django会自动根据模型类生成映射的数据库表,如果你不希望Django这么做,可以把managed的值设置为False。
      由于Django会自动根据模型类生成映射的数据库表,如果你不希望Django这么做,可以把managed的值设置为False。
      默认值为True,这个选项为True时Django可以对数据库表进行 migrate或migrations、删除等操作。在这个时间Django将管理数据库中表的生命周期。
      如果为False的时候,不会对数据库表进行创建、删除等操作。可以用于现有表、数据库视图等,其他操作是一样的。

    db_table
      db_table是用于指定自定义数据库表名的。Django有一套默认的按照一定规则生成数据模型对应的数据库表名,如果你想使用自定义的表名,就通过这个属性指定。

    abstract
      这个属性是定义当前的模型类是不是一个抽象类。
      所谓抽象类是不会生成相应数据库表的。
      一般我们用它来归纳一些公共属性字段,然后继承它的子类能够继承这些字段。
      比方以下的代码中Human是一个抽象类。Employee是一个继承了Human的子类,那么在执行数据迁移命令时,不会生成Human表,可是会生成一个Employee表,它包括了Human中继承来的字段。
      然后, 假设再加入一个Customer模型类,它能够相同继承Human的公共属性:

    class Human(models.Model):
        name=models.CharField(max_length=100)
        GENDER_CHOICE=((u'M',u'Male'),(u'F',u'Female'),)
        gender=models.CharField(max_length=2,choices=GENDER_CHOICE,null=True)
    
        class Meta:
            abstract=True
    
    
    class Employee(Human):
        joint_date=models.DateField()
    
    
    class Customer(Human):
        first_name=models.CharField(max_length=100)
        birth_day=models.DateField()
    

    持续更新中......

  • 相关阅读:
    学习笔记9
    学习笔记8
    学习笔记7
    学习笔记6
    学习笔记5
    学习笔记4
    学习笔记3
    学习笔记2
    学习笔记1
    矩形覆盖
  • 原文地址:https://www.cnblogs.com/ZN-225/p/14705606.html
Copyright © 2011-2022 走看看