深入django :自定义ORM
2015-07-21 11:25
483 查看
Django的Model使用ORM来操作数据库,通常我们只需关注Model类本身,Django自己会处理到数据库的映射。但凡事总有例外,有时需要改变默认的映射行为。Django对此也提供了丰富的支持。
1. 自定义字段名
默认的字段名与属性名相同,可以通过字段的db_column属性自定义,如
where = models.CharField(max_length=400, db_column='place')
2. 自定义索引
除了ID字段,其他字段默认不建立索引,可以通过字段的db_index属性自定义,如
publish_date= models.DateField(db_index=True)
3. 自定义ID
如果不指定ID,默认创建一个类型为IntegerField的id字段,可以通过字段的primary_key属性指定自己的ID字段。如:
key = models.IntegerField(primary_key=True)
4. 自定义表名
默认的表名是appName_modelName,在Model类的Meta中可以通过db_table属性改变默认的表名。
5. 自定义表空间
对于索引字段,默认在settings的DEFAULT_INDEX_TABLESPACE设定的表空间中建立索引,可以通过字段的db_tablespace属性指定,如
publish_date= models.DateField(db_index=True,db_tablespace='another_tbs')
对于Model类,通过Meta中的db_tablespace属性指定特定的表空间。
6. 自定义关联关系
1)外键默认关联到对方的主键字段,可以通过外键的to_field指定关联到的字段,如
to_model = models.ForeighKey(ToModel,to_field='key')
2)对于many-to-many关联,Django会创建一个关联表,默认表名是两个表名通过下划线连接起来。可以通过ManyToManyField的db_table指定关联表的表名。 3)对于many-to-many关联,如果不想使用Django创建的关联表,可以通过ManyToManyField的through属性指定到一个已存在的Model类。
1. 自定义字段名
默认的字段名与属性名相同,可以通过字段的db_column属性自定义,如
where = models.CharField(max_length=400, db_column='place')
2. 自定义索引
除了ID字段,其他字段默认不建立索引,可以通过字段的db_index属性自定义,如
publish_date= models.DateField(db_index=True)
3. 自定义ID
如果不指定ID,默认创建一个类型为IntegerField的id字段,可以通过字段的primary_key属性指定自己的ID字段。如:
key = models.IntegerField(primary_key=True)
4. 自定义表名
默认的表名是appName_modelName,在Model类的Meta中可以通过db_table属性改变默认的表名。
5. 自定义表空间
对于索引字段,默认在settings的DEFAULT_INDEX_TABLESPACE设定的表空间中建立索引,可以通过字段的db_tablespace属性指定,如
publish_date= models.DateField(db_index=True,db_tablespace='another_tbs')
对于Model类,通过Meta中的db_tablespace属性指定特定的表空间。
6. 自定义关联关系
1)外键默认关联到对方的主键字段,可以通过外键的to_field指定关联到的字段,如
to_model = models.ForeighKey(ToModel,to_field='key')
2)对于many-to-many关联,Django会创建一个关联表,默认表名是两个表名通过下划线连接起来。可以通过ManyToManyField的db_table指定关联表的表名。 3)对于many-to-many关联,如果不想使用Django创建的关联表,可以通过ManyToManyField的through属性指定到一个已存在的Model类。
相关文章推荐
- 在Django的模型中添加自定义方法的示例
- 在一个div上添加另外一个div:例如在一个div的左上角添加一个logo
- OC 类目(category) 延展(extension) 协议(protocol)(摘抄)
- hdu 1213 How Many Tables(并查集)
- Django的数据模型访问多对多键值的方法
- 举例讲解Django中数据模型访问外键值的方法
- BZOJ 3315: [Usaco2013 Nov]Pogo-Cow( dp )
- poj 3349 Snowflake Snow Snowflakes
- 编写自定义的Django模板加载器的简单示例
- dl-ssl.google.com
- hdu 2545 树上战争(并查集)
- 剖析Django中模版标签的解析与参数传递
- Classical algorithms
- Go语言开发环境配置
- 剖析Django中模版标签的解析与参数传递
- 编写自定义的Django模板加载器的简单示例
- 举例讲解Django中数据模型访问外键值的方法
- Django的数据模型访问多对多键值的方法
- 在Django的模型中添加自定义方法的示例
- Django框架中的对象列表视图使用示例