如何在Django中使用ORM

使用ORM(对象关系映射)是Django中实现数据持久化的一种方式。ORM将数据库中的表映射为Python中的类,可以通过Python对象的方式进行操作,而无需直接操作SQL语句。

以下是在Django中使用ORM的基本步骤:

  1. 定义模型类

在models.py文件中定义模型类,每个模型类代表一张数据库表,属性代表表中的字段。

例如,我们定义一个名为User的模型类,代表一个用户。具体代码如下:

from django.db import models

class User(models.Model):
    name = models.CharField(max_length=128)
    email = models.EmailField()
  1. 创建和同步数据库表

运行以下命令来创建和同步数据库表:

python manage.py makemigrations
python manage.py migrate
  1. 使用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查询时,没有结果返回请问是哪里的问题?