1.models.py文件内容:
from django.db import models
class Person(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=32, verbose_name='姓名')
age = models.IntegerField(null=True, blank=True, verbose_name='年龄')
birth = models.DateTimeField(auto_now=True, verbose_name='生日')
sex = models.CharField(max_length=32, choices=(('1', '男'), ('2', '女')), verbose_name='性别')
def __str__(self):
return '< person %s-%s >' % (self.name, self.id)
class Meta:
# ordering = 'id' # 按照id排序
db_table = "person"
verbose_name = "个人信息"
verbose_name_plural = "所有用户信息"
2.在项目根目录下新建一个orm目录,然后创建一个orm.py文件,内容如下:
import os
# 如果忘记main是怎么写的,可以复制manage.py文件的开头,然后再导入django
if __name__ == '__main__':
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "orm_about.settings")
import django
django.setup()
from app01 import models
# 1 查询所有对象,返回一个对象集合
persons = models.Person.objects.all()
print(persons)
# 2 get 查询已经存在的对象,没有则报错
ret = models.Person.objects.get(id=1)
print(ret)
# 3 filter 查询所有满足条件的对象,没有则返回一个空集合。
ret = models.Person.objects.filter(sex=1)
print(ret)
# 4 exclude 查询所有不满足此条件的对象,返回一个对象集合
ret = models.Person.objects.exclude(id=3)
print(ret)
# 5 values 取具体的数据,对象列表,里面的元素是字典,字段:值
# 没有指定参数 获取所有字段数据
# 指定参数 获取指定字段的数据
ret = models.Person.objects.all().values('id', 'name')
for i in ret:
print(i, type(i))
# 6 values_list 取具体的数据,对象列表,里面的元素是元组,字段的值
# 没有指定参数 获取所有字段的值(不包含字段名,纯取值)
# 指定参数 获取指定字段的值(不包含字段名,纯取值)
ret = models.Person.objects.all().values_list('name', 'id')
for i in ret:
print(i, type(i))
# 7 order_by 排序,按照给出的字段排序,如果出现第一个字段的值相同的情况,按照第二个字段再次排序;
# 字段前'-'表示降序
ret = models.Person.objects.all().order_by('age', '-id')
print(ret)
# 8 reverse 对排序结果进行反转
ret = models.Person.objects.all().order_by('id').reverse()
print(ret)
# 9 distinct 去重 针对的是每一条数据对象是否重复
# ret = models.Person.objects.all().order_by('id').distinct()
# 10 count 计数
ret = models.Person.objects.all().count()
print(ret)
# 11 first 取第一个对象,取出来的对象如果不存在,显示None
# ret = models.Person.objects.filter(id=100).first() # None
# 12 last 取最后一个对象,取出来的对象如果不存在,显示None
ret = models.Person.objects.all().first()
ret1 = models.Person.objects.all().last()
print(ret)
print(ret1)
# 13 exists 判断对象是否存在,返回True或False
ret = models.Person.objects.all().exists()
ret1 = models.Person.objects.filter(id=100).exists()
print(ret)
print(ret1)