1.创建表首先,参考模型可以设置的各种字段类型。Createatableinthemodelfromdjango.dbimportmodelsCreateyourmodelshere.classPerson(models.Model):#定义一个用户名字段,不能重复username=models.CharField(max_length=10,unique=True)password=models.CharField(max_length=10)#默认值设置1age=models.IntegerField()#False表示男性True表示女性Female为1Male为0sex=models.BooleanField(default=False)#生成的列名可以是通过指定属性设置,但是类中仍然使用p_des不指定,默认生成格式为APP+类名db_table='user'pythonmanage.pymakemigrationspythonmanage.pymigrate通过代码随机生成一些数据,这里有个小坑,大家可能会遇到=。=defaddUser(request):foriinrange(5):person=Person()num=random.randrange(100)person.username='sola%d'%numperson.password='pass%d'%numperson.age=numperson.sex=num%2person.save()返回HttpResponse("成功")2。条件查询可以通过过滤器和排除链接起来。defgetUser(request):#可以通过filter查询(满足),可以继续链多个条件。#users=Person.objects.filter(username__contains="5").filter(username__contains=3)#也可以通过exclude来查询(不满足)users=Person.objects.exclude(username__contains="5").filter(username__contains="9")foruserinusers:print(user.username)print(user.create_date)returnHttpResponse("success")3.另一个添加方法defaddUserTwo(request):user=Person.objects.create(username='rui~',password='rui!',age=18)user.save()returnHttpResponse("success")4.sortdefgetUser(request):#直接将order_by添加到基于字段排序,默认为正序,前面的加减号为倒序users=Person.objects.filter(age__in=['73','34','84']).order_by("-username")foruserinusers:print(user.username)print(user.create_date)returnHttpResponse("success")5.将数据转换成字典(convertintoamap)defgetUser(request):#values可以直接将结果转化为字典,字典可以通过工具转化为字典直接转化为JSONusers=Person.objects.filter(age__in=['63','50','36','11']).values()foruserinusers:print(user.username)print(user.create_date)print(user.sex)returnHttpResponse("success")6.二次查询(再次查询结果)defgetUser(request):users=Person.objects.filter(age__in=['63','50','36','11'])#可以再查询users=users.filter(age='50')foruserinusers:print(user.username)print(user.create_date)print(user.sex)returnHttpResponse(“成功”)7。切片查询defgetUser(request):#切片查询,从第四项到第五项,没有负数users=Person.objects.all()[3:5]foruserinusers:print(user.username)print(user.create_date)print(user.sex)返回HttpResponse("success")8.忽略casequery,在query9前加i。更改时区设置默认Django有一套自定义的外汇返利时区,与一般数据库不匹配,会造成查询不准确。需要在设置中关闭。默认为True,可以更改为False。USE_TZ=False10。聚合函数defgetUser(request):#聚合函数,Avg平均值,Count数量,Max最大值,Min最小值,Sum求和;参数填入字段avgNum=Person.objects.aggregate(Avg("age"))print(avgNum)returnHttpResponse("success")11。比较某个字段defgetUser(request):#比较一段数据中的某个字段,可以是大小相等,包括等。#users=Person.objects.filter(age=F("id"))#也可以这样写,age大于id+1users=Person.objects.filter(age__gt=F("id")+1)print(users.values())返回HttpResponse("成功")12.查询逻辑运算符的写法defgetUser(request):users=Person.objects.filter(Q(age__gt=90)&Q(age__lt=100))print(users.values())returnHttpResponse("success")13.封装一些默认的查询条件因为查询方法是通过Django在model中自动生成查询objectsManager,所以我们可以创建一个继承Manager的类,重写他的查询方法,然后给Model类给objects赋值参数,然后调用objects参数进行查询,默认会过滤你要过滤的条件模型歌曲管理类SongManager(models.Manager):defget_queryset(self):returnsuper(SongManager,self).get_queryset().filter(is_deleter=1)继承歌曲管理类classSong(models.Model):name=...request):songs=Song.objects.all()对于歌曲中的歌曲:print(song.name)returnHttpResponse("success")
