深入Django(2):自定义ORM

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类。
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,让我来回答您的问题。 首先,Django 是一个流行的 Python Web 框架,它提供了许多强大的功能,其中之一就是 ORM(对象关系映射)。 ORM 允许您使用 Python 对象来处理数据库操作,而不是直接编写 SQL 语句。这样做有很多好处,比如更容易维护和更易于理解。 下面是一些基本的 ORM 操作,用于在 Django 中执行增删改操作。 首先,要使用 ORM,您需要在您的 Django 项目中创建一个模型。模型是一个 Python 类,它代表了数据库中的一个表。 例如,这是一个简单的模型类,它代表了一个名为 `Book` 的表: ``` from django.db import models class Book(models.Model): title = models.CharField(max_length=100) author = models.CharField(max_length=100) published_date = models.DateField() ``` 接下来,我们可以使用以下代码将一个新的 `Book` 对象插入到数据库中: ``` book = Book(title='Django for Beginners', author='William Vincent', published_date='2021-01-01') book.save() ``` 我们可以使用以下代码来更新一个现有的 `Book` 对象: ``` book = Book.objects.get(title='Django for Beginners') book.author = 'William S. Vincent' book.save() ``` 最后,我们可以使用以下代码来删除一个 `Book` 对象: ``` book = Book.objects.get(title='Django for Beginners') book.delete() ``` 这些是最基本的 ORM 操作,但是 Django ORM 还提供了许多其他的高级功能,比如过滤、排序和聚合查询等。如果您想了解更多信息,请查看 Django 的官方文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值