django:orm 작업 정리

18565 단어 ormdjango
샘플 모델스.py, 몇 개의 테이블을 만듭니다.
from django.db import models

#     
#python manage.py makemigrations
#python manage.py migrate

class UserInfo(models.Model):
    nid = models.AutoField(primary_key=True)#  
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
    ug = models.ForeignKey("usergroup",on_delete=models.CASCADE,null=True)
    #        
    color_list = (
        (1,'  '),
        (2,'  ')
    )
    color = models.IntegerField(choices=color_list)

    def __str__(self):
        return "%s-%s"%(self.nid,self.username)

class usergroup(models.Model):
    title = models.CharField(max_length=32)

    #       
    # class Meta:
    #     unique_together = (
    #         ('title')
    #     )
    #     index_together = (
    #         ('title')
    #     )#     

class Boy(models.Model):
    name = models.CharField(max_length=32)
    m = models.ManyToManyField(to='Girl',blank=True)
class Girl(models.Model):
    name = models.CharField(max_length=32)

인터페이스 테스트 orm 데이터 조작을 간단하게 쓰기:
from django.shortcuts import render,HttpResponse
from app01 import models
from django.db.models import Count,Sum,Max
# Create your views here.
def index(request):
    #   
    # models.usergroup.objects.create(title="   ") ==》obj.save
    # models.UserInfo.objects.create(username="tom",
    #                                password="123",
    #                                ug_id=1)
    # #  
    # group_list = models.usergroup.objects.all()
    # group_list = models.usergroup.objects.all().only("nid","username")
    # group_list = models.usergroup.objects.all().defer('name')#  
    # #    
    # group_list = models.usergroup.objects.filter(id__gt=1)
    # group_list = models.usergroup.objects.filter(id__lt=1)
    # #  
    # models.usergroup.objects.filter(id=1).delete()
    #   
    # models.usergroup.objects.filter(id=1).update(title="   ")
    # print(group_list)
    # for row in group_list:
    #     print(row.id,row.title)
    #   
    # result = models.UserInfo.objects.all()
    # for obj in result:
    #     print(obj.username,obj.password,obj.ug_id,obj.ug.title)
    #   
    # result = models.usergroup.objects.all().first()
    # print("  ",result.id,result.title)
    # for row in result.userinfo_set.all():
    #     print(row.username,row.password)
    #   
    # result = models.UserInfo.objects.all().values('nid','username','ug__title')
    # for row in result:
    #     print(row)
    # #  
    # result = models.UserInfo.objects.all().values_list('nid', 'username')
    # for row in result:
    #     print(row)
    #   -id          username  
    # user_list = models.UserInfo.objects.all().order_by("-nid","username")
    # print(user_list)
    #    v.query  sql    __gt     
    # v = models.UserInfo.objects.values('ug_id').annotate(xxxx=Count("nid")).filter(xxxx__gt=1)
    # print(v.query)
    # models.UserInfo.objects.filter(nid__gt=1)#  
    # models.UserInfo.objects.filter(nid__lt=1)#  
    # models.UserInfo.objects.filter(nid__lte=1)  #     
    # models.UserInfo.objects.filter(nid__gte=1)  #     
    # models.UserInfo.objects.filter(nid__in=[1,2,3]) #     
    # models.UserInfo.objects.filter(nid__  =[1, 2])
    # models.UserInfo.objects.filter(username__startswith="xxx")
    # models.UserInfo.objects.filter(username__contains="xxx")#  
    # models.UserInfo.objects.exclude(nid=1)#id   1

    #F         
    # from django.db.models import F
    # models.UserInfo.objects.all().update(password=F("password")+1)#      1

    #Q     ,       
    # models.UserInfo.objects.filter(nid=5,username="  ") #  2   and  
    # dic = {
     
    #     "nid": 5,
    #     "username": "  "
    # }
    # models.UserInfo.objects.filter(**dic)  #        
    from django.db.models import Q
    # models.UserInfo.objects.filter(Q(nid=5))
    # models.UserInfo.objects.filter(Q(nid=5) | Q(nid=6))#  
    # models.UserInfo.objects.filter(Q(nid=5) & Q(nid=6))# and
    #             
    # dic = {
     
    #     "k1": [1,2,3,4],
    #     "k2": [1,],
    #     "k3": [5,6,7]
    # }
    # con = Q()
    # for k,v in dic.items():
    #     q = Q()
    #     q.connector = 'OR'
    #     for i in v:
    #         q.children.append(('id',i))
    #     con.add(q,'AND')
    # models.UserInfo.objects.filter(con)
    #     
    # q1 = Q()
    # q1.connector = 'OR'
    # q1.children.append(('nid', 5))
    # q1.children.append(('nid', 6))
    # q1.children.append(('nid', 7))
    #
    # q2 = Q()
    # q2.connector = 'OR'
    # q2.children.append(("ug_id",1))
    # q2.children.append(("ug_id", 2))
    # q2.children.append(("ug_id", 3))
    #
    # q3 = Q()
    # q3.connector = 'AND'
    # q3.children.append(('id', 1))
    # q3.children.append(('id', 2))
    # q2.add(q3,'OR')
    #
    # con = Q()
    # con.add(q1,'AND')
    # con.add(q2,'AND')
    # con = (nid = 5 or nid = 6 or nid = 7 or(id=1 and id=2)) and(ug_id=1or ug_id=2 or ug_id=3)
    # extra              
    # v = models.UserInfo.objects.all().extra(select={
     
    #     "n": "select count(1) from app01_usergroup"
    # },select_params=[],#select    from  
    # where=["id=5","username=%s"],
    # params=["  "],# select * from   where   
    # tables='',#select * from  ,  
    # order_by=None# select * from   order by  
    # )
    # for obj in v:
    #     print(obj.username,obj.nid,obj.n)
    #    sql  
    # from django.db import connection,connections
    # cursor = connection.cursor()
    # cursor = connections["default"].cuirsor()
    # cursor.execute("sql  ",[])
    # row = cursor.fetchone()
    # row = cursor.fetchall()

    # models.UserInfo.objects.all().using('db2')#  db2   

    # res = models.UserInfo.objects.aggregate(k=Count('ug_id',distinct=True),n=Count('nid'))#distinct=True  
    # print(res)#{'k': 4, 'n': 5}

    #    
    # objs = {
     
    #     models.UserInfo(name='r22')
    # }
    # models.UserInfo.objects.bulk_create(objs,10)#    10   ,     999

    #get_or_create        ,     
    #updata_or_create        ,     

    #first     
    #last#      
    #exists     
    #        
    # models.UserInfo.objects.filter(nid__in=[1,2,3])
    # models.UserInfo.objects.in_bulk([1,2,3])

    #      models.UserInfo.objects.raw()

    #               
    # q = models.UserInfo.objects.all().select_related('ug')
    # for row in q:
    #     print(row.username,row.ug.title)

    #     ,     
    # q = models.UserInfo.objects.all().prefetch_related('ug')
    # for row in q:
    #     print(row.nid,row.ug.title)

    #==============   =============================
    """
    obj = models.Boy.filter(id=1).first()
       m ManyToManyField   
    obj.m.add(2)
    obj.m.add(2,4)
    obj.m.add(*[1,])
      
    obj.m.remove(1)
    obj.m.remove(2,3)
    obj.m.remove(*[1,])
      
    obj.m.set([1,])#  
      
    obj.m.all()[Girl  ]
    obj.m.filter(name='xxxx')#  
      
    obj.m.clear
      
    obj = models.Girl.objects.filter(name='xxx').first()
    v = obj.boy_set.all()
    """


    return HttpResponse("***")

여기에 간단명료하게 쓰여 있는데, 구체적으로 모르는 것은 어떤 용법을 상세하게 조사할 수 있다!

좋은 웹페이지 즐겨찾기