Django 数据操作

创建结构体

在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、在进行有关操作时需要根据需要导入一些包

猜你喜欢

转载自blog.csdn.net/weixin_38052444/article/details/82154831
今日推荐