创建结构体
在models.py 文件中创建
from django.db import models #Model就是MVC中的M,代表的数据对象,反映到数据库中就是数据表,Model中的属性是表的一列
class UserInfo(models.Model):
userid=models.AutoField(primary_key=True) #设置自动增长,并且为主键,默认是整型
username=models.CharField(max_length=30) #设置字符类型的字段,括号中一定要写点什么,才不会报错
password=models.CharField(max_length=50)
age=models.IntegerField(default=1) #设置整型的字段
dept_user = models.ForeignKey('DeptMent',null=True,on_delete=models.CASCADE) #设置外键,并且设置on_delete=models.CASCADE,功能是连级删除
class DeptMent(models.Model):
deptname = models.CharField(max_length=30)
在views.py文件夹中的一些操作:
添加操作
def index(request):
models.DeptMent.objects.create(deptname='计算机系')
models.DeptMent.objects.create(deptname='数学系')
models.DeptMent.objects.create(deptname='经济系')
models.UserInfo.objects.create(username='tom',password='12345',age=20,dept_user_id=1)
models.UserInfo.objects.create(username='jack',password='12378',age=18,dept_user_id=2)
models.UserInfo.objects.create(username='kitty',password='12332',dept_user_id=3)
models.UserInfo.objects.create(username='eric',password='12321',age=27,dept_user_id=1)
return HttpResponse("操作成功!")
查询操作
def index(request):
data_list = models.UserInfo.objects.all()
print(data_list)
data_list = models.UserInfo.objects.all().filter(dept_user_id=2)
data_list = models.UserInfo.objects.all().filter(age__in=[18,20,])
data_list = models.UserInfo.objects.all().filter(age__gte=18)
for row in data_list:
print(row.username, row.password)
return HttpResponse("操作成功!")
删除操作
def index(request):
models.UserInfo.objects.all().filter(age=18).delete()
return HttpResponse("操作成功!")
更新操作
def index(request):
models.UserInfo.objects.all().filter(age=20).update(password=999888666) data_list=models.UserInfo.objects.filter(age__gte=10,age__lte=20) #查询年龄在10-20之间的数据
data_list = models.UserInfo.objects.filter(username__contains='to') #查询名字中包括‘to’的数据
data_list = models.UserInfo.objects.filter(username__icontains='To') #模糊查询名字中带有‘To’的数据
data_list=models.UserInfo.objects.filter(age__range=[10,20,]) #查询年龄范围在10-20之间的数据
for row in data_list:
print(row.username,row.password)
print(data_list.query)
data_list = models.UserInfo.objects.all().first()#获取首行数据
data_list = models.UserInfo.objects.all().last()#获取最后一行数据
print(data_list)
return HttpResponse("操作成功!")
排序
def index(request):
date_list = models.UserInfo.objects.all().order_by('age')
for row in date_list:
print(row.username, row.password,row.age)
return HttpResponse("操作成功!")
get 使用(获取匹配数据)
def index(request):
result = models.UserInfo.objects.get(age=20) #get 获取
print(result.username)
return HttpResponse("操作成功!")
exclude用法
def index(request):
data_list=models.UserInfo.objects.exclude(age__in=[10,20,]) #获取年龄在10-20之外的数据
print(data_list)
for row in data_list:
print(row.username,row.password,row.age)
print(data_list.query)
return HttpResponse("操作成功!")
计数
def index(request):
num = models.UserInfo.objects.all().count()
print(num)
return HttpResponse("操作成功!")
外键的相关操作:
def index(request):
# 通过外键进行跨表操作
user_list = models.UserInfo.objects.all() # 对象的集合
for row in user_list: # row:对象
print(row.username, row.age, row.dept_user.deptname)#row.dept_user指的是外键的对象
user_first = models.UserInfo.objects.all().first() # 对象的集合
print(user_first.dept_user.deptname)
date_list = models.UserInfo.objects.all().values('username', 'password') # values:获取的是字典内容
print(date_list)
print(date_list.query)
data_list = models.UserInfo.objects.all().values_list('username', 'password') # data_list:呈现内容是元组
print(data_list)
return HttpResponse("操作成功!")
分组
def index(request):
result = models.UserInfo.objects.values('dept_user_id').annotate(cnt=Count('userid')) #annotate注释,本句话的意思是将计数‘userid’命名为cnt字段,类似于sql语句中的as
result = models.UserInfo.objects.values('dept_user_id').annotate(cnt=Count('userid')).filter(cnt__gt=2) #filter 过滤器
print(result)
print(result.query)
return HttpResponse("操作成功!")
F操作
def index(request):
from django.db.models import F #F:可以update语法使用
models.UserInfo.objects.filter(userid=4).update(age=F('age')+10) #在年龄上面加 10岁
return HttpResponse("操作成功!")
Q操作
def index(request):
from django.db.models import Q #Q:主要用在查询
result = models.UserInfo.objects.filter(Q(userid=4))
result = models.UserInfo.objects.filter(Q(userid=4)|Q(userid=8))
result = models.UserInfo.objects.filter(Q(userid=4)&Q(userid=8))
print(result[0].username,result[1].username)
return HttpResponse("操作成功!")
总结:
1、有关于结构操作时,直接运行没法成功
可以先:
其次:
在控制台依次输入,makemigrations——>migrate
然后运行
最后在网页输入:
127.0.0.1:8000/myapp/index
网页提示成功,即可完成
一般操作直接运行,然后再网页运行即可
2、在进行有关操作时需要根据需要导入一些包