1、BooleanField()
2、CharField()
3、DateField()
4、DateTimeField()
5、DecimalField()
6、EmailField() #存电子邮件 - varchar
7、FloatField()
8、ImageField() #存图片路径 - varchar
ImageField(upload_to='static/***/***')
9、IntergerField()
10、URLField()
11、TextField() #存大量文本数据 - text
1、max_length
指定数据的最大长度
在CharField()必须要设置的选项
2、default
为当前字段指定默认值
3、null
指定当前字段是否允许为空,默认值是 false
1. python ./manage.py makemigrations
作用:将每个应用下的 models.py 文件生成一个数据库的中间文件,并保存在migrations目录中(制造迁移)
2、python ./manage.py migrate
作用:将每个应用下的 migrations 目录中的中间文件同步到数据库中
1、注意
1、Models中的每个class都称为 模型类(Model类),实体类(Entry/Entity)
2、Models中的每个模型类,必须继承自 models.Model
2、编写模型类
from django.db import models
class Entry(models.Model):
属性1 = models.字段类型(字段选项)
模型文件编写完成就可以执行 makemigrations / migrate文件
1. Entry.objects.create(属性=值,属性=值)
Entry :具体要操作的的Model类
ef add_views(request):
TestUser.objects.create(name='鲁迅', age=18)
return HttpResponse("addOK")
2. 创建一个Models 对象,通过对象的save() 完成增加
obj = TestUser(name='xifang', age = 22)
obj.save()
def add_views(request):
# 第一种方式
# TestUser.objects.create(name='鲁迅', age=18)
# 第二种方式
obj = TestUser(name='xifang', age=22)
obj.save()
return HttpResponse("addOK")
3. 通过字典构建对象,由 save()完成增加
dic = {
'属性1': '值1',
'属性2':'值2',
.....
}
obj = Entry(**dic)
obj.save()
def add_views(request):
# 第三种方式
dic = {
'name':'Jony',
'age':19,
}
obj = TestUser(**dic)
obj.save()
return HttpResponse("addOK")
4. 通过Entry.objects 调用查询接口
Entry.objects.all()
等同于 select * from...
def query_views(request):
auList = TestUser.objects.all()
for au in auList:
print(au.name ,",", au.age)
return HttpResponse('Query ok')
5. 查询指定列
语法: values('列1', '列2', .....)
用法 :Entry.objects.values('列1','列2',......)
例:
注意: value() 可以用在所有的返回查询结果集的方法后面
TestUser.objects.all().values('name','age')
3 .values_list()
返回的是一个元祖
TestUser.objects.values_list('name','age')
返回值:
排序函数
order_by()
age_list = TestUser.objects.all().order_by('age')
for a in age_list:
print(a.age, ',', a.name)
注意:
这种写法:也是可以
age_list = TestUser.objects.order_by('age')
如果是降序排列 在字段名前面加'-'
例如;
age_list = TestUser.objects.all().order_by('-age')
对条件取反
exclude()
用法: Entry.objects.exclude(条件)
相当于 select * from testuser where not (age = 18 and id =3);
auList = TestUser.objects.exclude(age=18,id=3)
for a in auList:
print(a.age,',', a.id,',', a.name)
auList = TestUser.objects.exclude(id=3)
相当于: select * from testuser where not ( id =3);
1. filter(参数)
用法: Entry.objects.filter(参数)
2. Field Lookup(查询表达式) 完成复杂的条件查询
例:
TestUser.objects.filter(id__exact=5)
test = TestUser.objects.filter(id__exact=5)
for te in test:
print(te.name)
"__" 前面填写字段名
参数 | 作用 |
__exact | 精确查询,等值判断 |
__contains | 筛选出属性中包含指定关键字的记录(模糊查询) |
__lt | 筛选出属性值小于指定值的记录 |
__gt | 不区分大小写的完全匹配 |
__lte | 筛选出属性值大于指定值的记录 |
__gte | 筛选出属性值大于等于指定值的记录 |
__startswith | 筛选出以指定关键字开始的记录 |
__endswith | 筛选出以指定关键结尾的记录 |