常用字段
AutoField:映射到数据库中是int
类型,可以有自动增长的特性。
BigAutoField:64位的整形,类似于AutoField
BooleanField:在模型层面接收的是True/False
CharField: 在数据库层面是varchar
类型。
DateField:日期类型。
DateTimeField:日期时间类型,类似于DateField
。不仅仅可以存储日期,还可以存储时间。
TimeField:时间类型。
EmailField:类似于CharField
。
FileField:用来存储文件的。
ImageField:用来存储图片文件的。
FloatField:浮点类型。映射到数据库中是float
类型。
IntegerField:整形。
PositiveIntegerField:正整形。
SmallIntegerField:小整形。
PositiveSmallIntegerField:正小整形。
UUIDField:只能存储uuid
格式的字符串。
URLField:类似于CharField
,只不过只能用来存储url
格式的字符串。并且默认的max_length
是200
常用参数
null:用来标识字段是否可以为空.
blank:与null类似, 这个和null
是有区别的,null
是一个纯数据库级别的。而blank
是表单验证级别的。
db_column:改变这个字段在数据库中的名字。
default:默认值。
primary_key:是否为主键。默认是False
。
unique:在表中这个字段的值是否唯一。
创建模型的步骤
第一步 构造数据库表
class Person(models.Model):
name = models.CharField(max_length=30)
age = models.IntegerField()
第二步 生成表结构,迁移数据
python manage.py makemigrations
python manage.py migrate
第三步 在控制器操作
进入交互模式
python manage.py shell
导入数据库表
from app.models import Person
存入数据
Person.objects.create(name=“zyy", age=18)
查看数据
Person.objects.all()
注意: 字段中不能有 __(双下划线,因为在Django QuerySet API中有特殊含义)
新建对象
1.Person.objects.create(name=name,age=age)
2.p = Person(name="WZ", age=23)
p.save()
3.p = Person()
p.age = 23
p.save()
4.Person.objects.get_or_create(name="WZT", age=23)
获取对象
1.Person.objects.all()****#获得全部对象
2. Person.objects.all()[:10] #切片操作,获取10个人,不支持负索引,切片可以节约内存
3. Person.objects.get(name=name) #get是用来获取一个对象的
4.filter筛选
Person.objects.filter(name="abc") # 等于Person.objects.filter(name__exact="abc") 名称严格等于 "abc" 的人
Person.objects.filter(name__iexact="abc") # 名称为 abc 但是不区分大小写,可以找到 ABC, Abc, aBC,这些都符合条件
Person.objects.filter(name__contains="abc") # 名称中包含 "abc"的人
Person.objects.filter(name__icontains="abc") #名称中包含 "abc",且abc不区分大小写
Person.objects.filter(name__regex="^abc") # 正则表达式查询
Person.objects.filter(name__iregex="^abc") # 正则表达式不区分大小写
5.filter排除
Person.objects.exclude()
创建站点
创建站点(超级管理员)
1.python manage.py createsuperuser
2.按提示输入用户名、邮箱、密码
注意:django从1.9版本开始对密码进行了限制, 长度不能少于8个字符, 外国人的名字以及一些简单密码做了限制.
外键
外键通过ForeignKey(to,on_delete,\**options)
来实现。
第一个参数是引用的是哪个模型
第二个参数是在使用外键引用的模型数据被删除了,这个字段该如何处理
读取数据