在 Django 中,你可以使用 Django 的 models.py 文件来定义数据库模型。每个模型都是一个 Python 类,继承自 Django 的 models.Model
类。每个类的属性都对应着数据库表的一个字段。例如,你可以定义一个 User
模型来表示用户信息:
from django.db import models
class User(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
age = models.IntegerField()
created_at = models.DateTimeField(auto_now_add=True)
在这个例子中,我们定义一个 User
模型,它有四个字段:名称、电子邮箱、年龄和创建时间。你可以根据需要添加更多的字段,比如性别、密码等。
定义好模型之后,你就可以使用 ORM 来执行各种数据操作。ORM 提供一系列的方法来创建、读取、更新和删除数据。
要创建一个新的用户,你可以使用 create()
方法:
user = User.objects.create(name='John Doe', email='john@example.com', age=30)
这将在数据库中插入一条新的用户记录。
ORM 提供多种方法来读取数据。你可以使用 all()
方法来获取所有的用户:
all_users = User.objects.all()
你也可以使用 filter()
方法来根据条件筛选数据:
young_users = User.objects.filter(age__lt=25)
这将返回所有年龄小于 25 岁的用户。
要更新一个用户的信息,你可以先获取该用户对象,修改它的属性并保存:
user = User.objects.get(id=1)
user.email = 'new_email@example.com'
user.save()
这将更新 ID 为 1 的用户的电子邮箱地址。
要删除一个用户,你可以使用 delete()
方法:
user = User.objects.get(id=1)
user.delete()
这将删除 ID 为 1 的用户。
ORM 还支持许多高级查询功能,如关联查询、聚合查询、原生 SQL 查询等。例如,你可以使用 select_related()
或 prefetch_related()
方法来预加载关联对象,提高查询效率。
users = User.objects.all().select_related('profile')
这将获取所有用户及其关联的个人资料信息。
ORM 还支持复杂的查询条件,如 Q
对象、聚合函数等,你可以根据需要进行更灵活的查询。
在某些情况下,你可能需要执行多个数据操作并确保它们作为一个整体成功或失败。这就需要使用事务管理。Django 的 ORM 提供 transaction.atomic()
装饰器或上下文管理器来帮助你管理事务:
from django.db import transaction
@transaction.atomic
def transfer_money(from_account, to_account, amount):
from_account.balance -= amount
from_account.save()
to_account.balance += amount
to_account.save()
在这个例子中,在转账过程中出现任何错误,整个事务都将被回滚,确保数据的一致性。
Django 的 ORM 是一个强大而灵活的工具,它使得开发者可以使用 Python 代码来与数据库进行交互,而无需直接编写 SQL 语句。ORM 提供创建、读取、更新和删除数据的方法,还支持高级查询、事务管理等功能。通过使用 ORM,开发者可以编写更加简洁、易读和可测试的代码,提高开发效率和代码质量。