一、在APP下的models.py文件中创建类,继承model
通用中文网站页面参考模板:
from django.db import models
class Fruits(models.Model):
Fruit_name = models.CharField(max_length=32, verbose_name="水果名称")
Fruit_price = models.FloatField(verbose_name="水果价格")
class Meta:
db_table = "Fruits" # 数据库中表的名称
verbose_name = "水果价格表" # 页面展示中文显示
verbose_name_plural = verbose_name # 中文显示复数与单数一致,防止出现水果价格表s的情况
def __str__(self):
return self.Fruit_name # 页面显示中文水果名称
二、生成迁移计划、执行迁移任务
(一)生成迁移计划
在pycharm下方终端输入命令代码:
python manage.py makemigrations
(二)执行迁移任务
在pycharm下方终端输入命令代码:
python manage.py migrate
三、模型基本操作
pychaem进入shell环境
python manage.py shell
引入my_app下models.py文件内的模板
from my_app.models import *
参考博文:
(一)增
1.对象管理器
Fruits.objects.create(Fruit_name="apple",Fruit_price=18)
2.实例化对象
f=Fruits(Fruit_name="grape",Fruit_price=12)
f.save()
(二)删
以实例化对象方式删除
f.delete()
(三)改
以实例化对象方式修改
f=Fruits(Fruit_name="grape",Fruit_price=12)
f.Fruit_name='watermelon' #修改水果名字从grape→watermelon
f.save()
(四)查
查询都是以对象管理器的方式进行查询
1.简单查询
类名.objects.all()
f=Fruits.objects.all()
f[1].Fruit_price
2.过滤查询
类名.objects.filter(条件1)
魔法函数:
__contains #包含
__startswith #以*为开始
__endswith #以*为结尾
__gte #大于等于
__gt #大于
__lte #小于等于
__lt #小于
__year #年
__month #月
__day #日
3.排除查询
类名.objects.exclude(条件1) #查询不满足条件1的对象
4.切片查询
类名.objects.all()[0:1] #返回Set集合类型,可以用切片方法
5.排序查询
类名.objects.order_by("类的属性名") #默认按照该属性名升序排列
类名.objects.order_by("-类的属性名") #降序排列
6.原生查询
代码繁琐,不建议使用
条件:搜索条件包含id或者用*;2个%%
format格式输出:
7.Q查询
from django.db.models import Q #与& 或| 非~
配合过滤查询使用
8.F查询
跳过代码层级,直接进行数据库的修改操作
from django.db.models import F
9.聚合查询
类名.objects.aggregate(函数名("类的属性名"))
10.分组查询
类名.objects.values("类的属性名1").annotate(Avg("类的属性名2"))
values 用于分组
annotate 要查询的项目
实现效果就是根据属性名1下有多少个不同的数据,就会分成多少组,然后每个组根据属性名2分别查询到相应的项目