Python2—0725笔记

2.1 ORM高级—双下划线 条件查询

2.2 惰性机制(迭代/切片) F查询和Q查询

2.3 反向查找的related_name


ORM高级—双下划线 条件查询

---------------了不起的双下划线(__)之单表条件查询----------------

#    models.Tb1.objects.filter(id__lt=10, id__gt=1)   # 获取id大于1 且 小于10的值

#    models.Tb1.objects.filter(id__in=[11, 22, 33])   # 获取id等于11、22、33的数据

#    models.Tb1.objects.exclude(id__in=[11, 22, 33])  # not in

#    models.Tb1.objects.filter(name__contains="ven")

#    models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感

#    models.Tb1.objects.filter(id__range=[1, 2])   # 范围bettwen and

#    startswith,istartswith, endswith, iendswith,

demo_userinfo[db]

views.py

代码

import json

from django.shortcuts import render,HttpResponse,redirect

from demo import models

import datetime

\# Create your views here.

def redir(request):

    print ('this is redir')

    return redirect('/login')

def test(request):

    dic={'a':1,'b':2}

    dic_json=json.dumps(dic)

    _clas='26期'

    #obj=models.Class.objects.filter(name=_clas).first()

    #print(obj.name,obj.sch.name)

    #for item in obj_li:

    #   print(item.name,item.sch.name)

    #for i in obj.user.all():

    #    print(i.name,i.username)

    #obj=models.School.objects.create(name='aming_GO班')

    #clas\_obj=models.Class.objects.create(name='GO\_1期',sch=obj)

    #print(clas_obj.sch.name)

    #models.Class.objects.filter(name=_clas).delete()

    #models.Class.objects.filter(sch\_\_name='aming\_python').update(name='10期python')

    #clas\_obj=models.Class.objects.filter(name=\_clas).first()

    #user_obj=models.UserInfo.objects.filter(name='王五')

    #clas_obj.user.clear()

    #clas\_obj.user.add(*user\_obj)

    #反向查询

    user_obj=models.UserInfo.objects.filter(name='测试1').first()

    #user\_obj.class\_set.all()

    #for item in user\_obj.class\_set.all():

    #    print(item.name)

    #class\_obj=models.Class.objects.filter(name='GO\_1期')

    #反向增加

    #user\_obj.class\_set.remove(*class_obj)

    obj\_li=models.UserInfo.objects.filter(id\_\_gt=1,id__lt=5)

    for item in obj_li:

         print(item.name)

    return HttpResponse(dic_json)

def login(request):

    if request.method=='GET':

       a=\[1,\]

       obj_li=models.UserInfo.objects.all()

       test= 'te st'

       d=datetime.datetime.now()

       for obj in obj_li:

          print('username--->',obj.username)

          print('password--->',obj.password)

    return render(request,'login.html',locals())

    #return HttpResponse('hello demo')


运行

访问127.0.0.1/t1/

views.py

代码

import json

from django.shortcuts import render,HttpResponse,redirect

from demo import models

import datetime

\# Create your views here.

def redir(request):

    print ('this is redir')

    return redirect('/login')

def test(request):

    dic={'a':1,'b':2}

    dic_json=json.dumps(dic)

    _clas='26期'

    #obj=models.Class.objects.filter(name=_clas).first()

    #print(obj.name,obj.sch.name)

    #for item in obj_li:

    #   print(item.name,item.sch.name)

    #for i in obj.user.all():

    #    print(i.name,i.username)

    #obj=models.School.objects.create(name='aming_GO班')

    #clas\_obj=models.Class.objects.create(name='GO\_1期',sch=obj)

    #print(clas_obj.sch.name)

    #models.Class.objects.filter(name=_clas).delete()

    #models.Class.objects.filter(sch\_\_name='aming\_python').update(name='10期python')

    #clas\_obj=models.Class.objects.filter(name=\_clas).first()

    #user_obj=models.UserInfo.objects.filter(name='王五')

    #clas_obj.user.clear()

    #clas\_obj.user.add(*user\_obj)

    #反向查询

    user_obj=models.UserInfo.objects.filter(name='测试1').first()

    #user\_obj.class\_set.all()

    #for item in user\_obj.class\_set.all():

    #    print(item.name)

    #class\_obj=models.Class.objects.filter(name='GO\_1期')

    #反向增加

    #user\_obj.class\_set.remove(*class_obj)

    id_li=\[1,3,5,7\]

    #obj\_li=models.UserInfo.objects.filter(id\_\_gt=1,id__lt=5)

    obj\_li=models.UserInfo.objects.filter(id\_\_in=id_li)

    for item in obj_li:

         print(item.name)

    return HttpResponse(dic_json)

def login(request):

    if request.method=='GET':

       a=\[1,\]

       obj_li=models.UserInfo.objects.all()

       test= 'te st'

       d=datetime.datetime.now()

       for obj in obj_li:

          print('username--->',obj.username)

          print('password--->',obj.password)

    return render(request,'login.html',locals())

    #return HttpResponse('hello demo')


运行

访问127.0.0.1/t1/

views.py

代码

import json

from django.shortcuts import render,HttpResponse,redirect

from demo import models

import datetime

\# Create your views here.

def redir(request):

    print ('this is redir')

    return redirect('/login')

def test(request):

    dic={'a':1,'b':2}

    dic_json=json.dumps(dic)

    _clas='26期'

    #obj=models.Class.objects.filter(name=_clas).first()

    #print(obj.name,obj.sch.name)

    #for item in obj_li:

    #   print(item.name,item.sch.name)

    #for i in obj.user.all():

    #    print(i.name,i.username)

    #obj=models.School.objects.create(name='aming_GO班')

    #clas\_obj=models.Class.objects.create(name='GO\_1期',sch=obj)

    #print(clas_obj.sch.name)

    #models.Class.objects.filter(name=_clas).delete()

    #models.Class.objects.filter(sch\_\_name='aming\_python').update(name='10期python')

    #clas\_obj=models.Class.objects.filter(name=\_clas).first()

    #user_obj=models.UserInfo.objects.filter(name='王五')

    #clas_obj.user.clear()

    #clas\_obj.user.add(*user\_obj)

    #反向查询

    user_obj=models.UserInfo.objects.filter(name='测试1').first()

    #user\_obj.class\_set.all()

    #for item in user\_obj.class\_set.all():

    #    print(item.name)

    #class\_obj=models.Class.objects.filter(name='GO\_1期')

    #反向增加

    #user\_obj.class\_set.remove(*class_obj)

    #id_li=\[1,3,5,7\]

    #obj\_li=models.UserInfo.objects.filter(id\_\_gt=1,id__lt=5)

    obj\_li=models.UserInfo.objects.filter(name\_\_contains='est')

    for item in obj_li:

         print(item.name)

    return HttpResponse(dic_json)

def login(request):

    if request.method=='GET':

       a=\[1,\]

       obj_li=models.UserInfo.objects.all()

       test= 'te st'

       d=datetime.datetime.now()

       for obj in obj_li:

          print('username--->',obj.username)

          print('password--->',obj.password)

    return render(request,'login.html',locals())

    #return HttpResponse('hello demo')


运行

访问127.0.0.1/t1/

views.py

代码

import json

from django.shortcuts import render,HttpResponse,redirect

from demo import models

import datetime

\# Create your views here.

def redir(request):

    print ('this is redir')

    return redirect('/login')

def test(request):

    dic={'a':1,'b':2}

    dic_json=json.dumps(dic)

    _clas='26期'

    #obj=models.Class.objects.filter(name=_clas).first()

    #print(obj.name,obj.sch.name)

    #for item in obj_li:

    #   print(item.name,item.sch.name)

    #for i in obj.user.all():

    #    print(i.name,i.username)

    #obj=models.School.objects.create(name='aming_GO班')

    #clas\_obj=models.Class.objects.create(name='GO\_1期',sch=obj)

    #print(clas_obj.sch.name)

    #models.Class.objects.filter(name=_clas).delete()

    #models.Class.objects.filter(sch\_\_name='aming\_python').update(name='10期python')

    #clas\_obj=models.Class.objects.filter(name=\_clas).first()

    #user_obj=models.UserInfo.objects.filter(name='王五')

    #clas_obj.user.clear()

    #clas\_obj.user.add(*user\_obj)

    #反向查询

    user_obj=models.UserInfo.objects.filter(name='测试1').first()

    #user\_obj.class\_set.all()

    #for item in user\_obj.class\_set.all():

    #    print(item.name)

    #class\_obj=models.Class.objects.filter(name='GO\_1期')

    #反向增加

    #user\_obj.class\_set.remove(*class_obj)

    #id_li=\[1,3,5,7\]

    #obj\_li=models.UserInfo.objects.filter(id\_\_gt=1,id__lt=5)

    obj\_li=models.UserInfo.objects.filter(name\_\_startswith='z')

    for item in obj_li:

         print(item.name)

    return HttpResponse(dic_json)

def login(request):

    if request.method=='GET':

       a=\[1,\]

       obj_li=models.UserInfo.objects.all()

       test= 'te st'

       d=datetime.datetime.now()

       for obj in obj_li:

          print('username--->',obj.username)

          print('password--->',obj.password)

    return render(request,'login.html',locals())

    #return HttpResponse('hello demo')


运行

访问127.0.0.1/t1/

views.py

代码

import json

from django.shortcuts import render,HttpResponse,redirect

from demo import models

import datetime

\# Create your views here.

def redir(request):

    print ('this is redir')

    return redirect('/login')

def test(request):

    dic={'a':1,'b':2}

    dic_json=json.dumps(dic)

    _clas='26期'

    #obj=models.Class.objects.filter(name=_clas).first()

    #print(obj.name,obj.sch.name)

    #for item in obj_li:

    #   print(item.name,item.sch.name)

    #for i in obj.user.all():

    #    print(i.name,i.username)

    #obj=models.School.objects.create(name='aming_GO班')

    #clas\_obj=models.Class.objects.create(name='GO\_1期',sch=obj)

    #print(clas_obj.sch.name)

    #models.Class.objects.filter(name=_clas).delete()

    #models.Class.objects.filter(sch\_\_name='aming\_python').update(name='10期python')

    #clas\_obj=models.Class.objects.filter(name=\_clas).first()

    #user_obj=models.UserInfo.objects.filter(name='王五')

    #clas_obj.user.clear()

    #clas\_obj.user.add(*user\_obj)

    #反向查询

    user_obj=models.UserInfo.objects.filter(name='测试1').first()

    #user\_obj.class\_set.all()

    #for item in user\_obj.class\_set.all():

    #    print(item.name)

    #class\_obj=models.Class.objects.filter(name='GO\_1期')

    #反向增加

    #user\_obj.class\_set.remove(*class_obj)

    #id_li=\[1,3,5,7\]

    #obj\_li=models.UserInfo.objects.filter(id\_\_gt=1,id__lt=5)

    obj\_li=models.UserInfo.objects.filter(username\_\_endswith='t')

    for item in obj_li:

         print(item.name)

    return HttpResponse(dic_json)

def login(request):

    if request.method=='GET':

       a=\[1,\]

       obj_li=models.UserInfo.objects.all()

       test= 'te st'

       d=datetime.datetime.now()

       for obj in obj_li:

          print('username--->',obj.username)

          print('password--->',obj.password)

    return render(request,'login.html',locals())

    #return HttpResponse('hello demo')


运行

访问127.0.0.1/t1


惰性机制(迭代/切片) F查询和Q查询

切片

demo_userinfo[db]

veiws.py

代码

import json

from django.shortcuts import render,HttpResponse,redirect

from demo import models

\# Create your views here.

def redir(request):

    print('this is redir')

    return redirect('/login/')

def test(request):

    dic={'a':1,'b':2}

    dic_json=json.dumps(dic)

    _clas = '26期'

    obj=models.UserInfo.objects.all()

    for item in obj:

        print(itme.name)

    return HttpResponse(dic_json)

def login(request):

    if request.method=='GET':

        a=\[1,\]

        # obj\_li=models.UserInfo.objects.all()  # 查询所有  #querset\_list

        obj\_li=models.UserInfo.objects.all()    #querset\_list

        test='te st'

        t='test'

        import datetime

        d=datetime.datetime.now()

        # for obj in obj_li:

        #     print('username--->',obj.username)

        #     print('password--->',obj.password)

    # return render(request,'login.html',{'data':data,'msg':msg})

    return render(request,'login.html',locals())

    # return HttpResponse('hello demo')

运行

访问127.0.0.1/t1/

views.py修改

代码

import json

from django.shortcuts import render,HttpResponse,redirect

from demo import models

import datetime

\# Create your views here.

def redir(request):

    print ('this is redir')

    return redirect('/login')

def test(request):

    dic={'a':1,'b':2}

    dic_json=json.dumps(dic)

    _clas='26期'

    obj=models.UserInfo.objects.all()

    for item in obj\[1:3\]:

        print(item.name)

    return HttpResponse(dic_json)

def login(request):

    if request.method=='GET':

       a=\[1,\]

       obj_li=models.UserInfo.objects.all()

       test= 'te st'

       d=datetime.datetime.now()

       for obj in obj_li:

          print('username--->',obj.username)

          print('password--->',obj.password)

    return render(request,'login.html',locals())

    #return HttpResponse('hello demo')

运行

访问127.0.0.1/t1

F查询

demo_userinfo[db]

所有Password 加1000

导入模块

from django.bd.models import F

views.py

代码

import json

from django.shortcuts import render,HttpResponse,redirect

from demo import models

import datetime

\# Create your views here.

def redir(request):

    print ('this is redir')

    return redirect('/login')

def test(request):

    dic={'a':1,'b':2}

    dic_json=json.dumps(dic)

    _clas='26期'

    from django.db.models import F

    models.UserInfo.objects.update(password=F('password')+1000)

    return HttpResponse(dic_json)

def login(request):

    if request.method=='GET':

       a=\[1,\]

       obj_li=models.UserInfo.objects.all()

       test= 'te st'

       d=datetime.datetime.now()

       for obj in obj_li:

          print('username--->',obj.username)

          print('password--->',obj.password)

    return render(request,'login.html',locals())

    #return HttpResponse('hello demo')

运行

访问127.0.0.1/t1

Q查询

或查询

demo_userinfo [db]

导入模块

from django.db.models import Q

views.py

代码

import json

from django.shortcuts import render,HttpResponse,redirect

from demo import models

import datetime

\# Create your views here.

def redir(request):

    print ('this is redir')

    return redirect('/login')

def test(request):

    dic={'a':1,'b':2}

    dic_json=json.dumps(dic)

    _clas='26期'

    from django.db.models import Q

    obj=models.UserInfo.objects.filter(Q(username\_\_startswith='t')|Q(username\_\_endswith='c'))

    for item in obj:

        print(item.name)

    return HttpResponse(dic_json)

def login(request):

    if request.method=='GET':

       a=\[1,\]

       obj_li=models.UserInfo.objects.all()

       test= 'te st'

       d=datetime.datetime.now()

       for obj in obj_li:

          print('username--->',obj.username)

          print('password--->',obj.password)

    return render(request,'login.html',locals())

    #return HttpResponse('hello demo')

Q()|Q()  | 表示或

运行

访问127.0.0.1/t1

与查询

veiws.py

代码

import json

from django.shortcuts import render,HttpResponse,redirect

from demo import models

import datetime

\# Create your views here.

def redir(request):

    print ('this is redir')

    return redirect('/login')

def test(request):

    dic={'a':1,'b':2}

    dic_json=json.dumps(dic)

    _clas='26期'

    from django.db.models import Q

    obj=models.UserInfo.objects.filter(Q(username\_\_startswith='t'),Q(username\_\_endswith='t'))

    for item in obj:

        print(item.name)

    return HttpResponse(dic_json)

def login(request):

    if request.method=='GET':

       a=\[1,\]

       obj_li=models.UserInfo.objects.all()

       test= 'te st'

       d=datetime.datetime.now()

       for obj in obj_li:

          print('username--->',obj.username)

          print('password--->',obj.password)

    return render(request,'login.html',locals())

    #return HttpResponse('hello demo')

Q(),Q()  ,表示与

运行

访问127.0.0.1/t1


反向查找的related_name

clauser 代替了 类名(小写)_set

models.py

代码

from django.db import models

\# Create your models here.

class Number(models.Model):

    num=models.OneToOneField(to='UserInfo',verbose\_name='学号',on\_delete=models.CASCADE)

    def \_\_str\_\_(self):

        return self.num

class UserInfo(models.Model):

    name = models.CharField(max\_length=32, null=True, verbose\_name='姓名')

    username=models.CharField(max_length=32,null=True)

    password=models.CharField(max_length=32,null=True)

    # num=models.IntegerField(default=0)

    def func(self):

        return 'aming_python'

    def \_\_str\_\_(self):

        return self.username

class School(models.Model):

    name=models.CharField(max\_length=128,null=True,blank=True,verbose\_name='名字')

    #mac = models.URLField(max\_length=128, default='1', verbose\_name='地址')

    #email = models.EmailField(max\_length=128, null=True, blank=True, verbose\_name='邮箱')

    #true\_fal = models.BooleanField(max\_length=128, null=True, blank=True, verbose_name='是否')

    #date = models.DateField(verbose_name='时间')

    #cla=models.ForeignKey(to='Class',default=1,on_delete=models.CASCADE)

    # models.OneToOneField(to='Class' ,verbose_name=)

    def \_\_str\_\_(self):

        return self.name

class Class(models.Model): #create class\_to\_userinfor -->UserInfo\_id Class\_id

    sch = models.ForeignKey(to='School', default=1,on\_delete=models.CASCADE)  # cla\_id

    name = models.CharField(max\_length=128, null=True, blank=True, verbose\_name='名字')

    user=models.ManyToManyField(to='UserInfo',related_name='clauser')

    def \_\_str\_\_(self):

        return self.name

(venv) C:\Users\shenj\PycharmProjects\Django01>python manage.py makemigrations

(venv) C:\Users\shenj\PycharmProjects\Django01>python manage.py migrate

views.py

代码

import datetime

\# Create your views here.

def redir(request):

    print ('this is redir')

    return redirect('/login')

def test(request):

    dic={'a':1,'b':2}

    dic_json=json.dumps(dic)

    _clas='26期'

    user_obj=models.UserInfo.objects.filter(name='测试1').first()

    for item in user_obj.clauser.all():

       print(item.name)

    return HttpResponse(dic_json)

def login(request):

    if request.method=='GET':

       a=\[1,\]

       obj_li=models.UserInfo.objects.all()

       test= 'te st'

       d=datetime.datetime.now()

       for obj in obj_li:

          print('username--->',obj.username)

          print('password--->',obj.password)

    return render(request,'login.html',locals())

    #return HttpResponse('hello demo')

运行

访问127.0.0.1/t1

转载于:https://my.oschina.net/u/3959701/blog/3078969

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值