django:orm 작업 정리
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("***")
여기에 간단명료하게 쓰여 있는데, 구체적으로 모르는 것은 어떤 용법을 상세하게 조사할 수 있다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel의 전역 범위, 쉬운 방법.예를 들어 특정 역할에 대한 쿼리를 반복하는 자신을 발견한 적이 있습니다. 실제로 전역 범위가 필요한 시나리오를 가정해 보겠습니다. 주문 테이블이 있고 무료 주문과 유료 주문이 있습니다. 클라이언트는 자신의 주문만 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.