如何在Django中使用ORM
使用ORM(对象关系映射)是Django中实现数据持久化的一种方式。ORM将数据库中的表映射为Python中的类,可以通过Python对象的方式进行操作,而无需直接操作SQL语句。
以下是在Django中使用ORM的基本步骤:
- 定义模型类
在models.py文件中定义模型类,每个模型类代表一张数据库表,属性代表表中的字段。
例如,我们定义一个名为User的模型类,代表一个用户。具体代码如下:
from django.db import models
class User(models.Model):
name = models.CharField(max_length=128)
email = models.EmailField()
- 创建和同步数据库表
运行以下命令来创建和同步数据库表:
python manage.py makemigrations
python manage.py migrate
- 使用ORM进行CRUD操作
基本的ORM操作包括创建、读取、更新和删除(CRUD),具体代码如下:
创建:
user = User(name='John', email='john@example.com')
user.save()
读取:
users = User.objects.all() # 获取所有用户
user = User.objects.get(name='John') # 获取名为John的用户
更新:
user.name = 'Tom'
user.save()
删除:
user.delete()
以上是Django中使用ORM的基本步骤,当然ORM的功能不止于此,还有一些复杂的查询、数据库事务等操作,需要根据具体需求深入学习。
评论 1
queryset = models.Inbound.objects.filter( i_date__gte='2022-03-01', i_date__lte='2023-03-31', s_code__in=models.MaterialsTypeInfo.objects.filter(my_type=2, c_name='深圳市').values('s_code'), b_code__in=models.BranchInfo.objects.filter(c_name='深圳市').values('b_code'), m_code__in=models.Inbound.objects.values('m_code').filter( i_date__gte='2023-01-01', i_date__lte='2023-03-31', s_code__in=models.MaterialsTypeInfo.objects.filter( my_type=1, c_name='深圳市', ).values('s_code'), b_code__in=models.BranchInfo.objects.values('b_code').filter(c_name='深圳市'), ).distinct(), ).annotate( order_count=Sum(Case(When(i_date__gte='2023-03-01', i_date__lte='2023-03-31', then=1), default=0, output_field=IntegerField()))).values('m_code','order_count').order_by('m_code') 我使用annotate查询时,没有结果返回请问是哪里的问题?