(4) Django 모델 작업
5084 단어 django
모델이 자주 사용하는 조작에 대응하는 것은 데이터베이스에서의 삭제와 수정이다
참조 문서
https://docs.djangoproject.co...
샘플 파일
from django.db import models
class Students(models.Model):
""" """
username = models.CharField(max_length=64, null=False, unique=True)
age = models.IntegerField()
cls = models.ForeignKey('ClassInfo', on_delete=models.DO_NOTHING)
class ClassInfo(models.Model):
""" """
title = models.CharField(max_length=64, null=False, unique=True)
teachers = models.models.ManyToManyField("Teachers")
class Teachers(models.Model):
""" """
name = models.CharField(max_length=16, null=False, unique=True)
1. 싱글 테이블 작업
1.1 데이터 증가
obj = models.Students(username=' ', cls_id='1')
obj.save()
models.Students.objects.create(username=' ', cls_id='1)
1.2 데이터 조회
# id 1
models.Students.objects.get(id='1')
# id=1
obj = models.Students.objects.filter(id='1')
# 19
obj = models.Students.objects.filter(age__gt=19)
# 19 22
obj = models.Students.objects.filter(age__gt=19, age__lt=22)
# id [1, 3, 5, 6]
obj = models.Students.objects.filter(id__in=[1, 3, 5, 6])
# “ ”
obj = models.Students.objects.filter(username__contains==' ')
stu_list = models.Students.objects.all() # ,
stu_list = models.Students.objects.values() # , , ,
stu_list = models.Students.objects.values_list() # ,
1.3 데이터 수정
# id 1
obj = models.Students.objects.filter(id='1') # id 1
obj.update(cls_id=2) # update
1.4 데이터 삭제
# id 1
obj = models.Students.objects.filter(id='1') # id 1
obj.delete() # delete()
1.5 쿼리 세트
질의 함수
함수명
기능
반환값
설명
get
테이블에 충족된 데이터 중 하나만 반환
반환 값은 모델 클래스의 대상입니다
매개 변수에 조회 조건을 씁니다. 1) 여러 개의 데이터를 찾으면 비정상적인MultipleObjectsReturned를 던집니다.2) 데이터가 조회되지 않으면 버퍼링 예외: DoesNotExist
all
모델 클래스에 대응하는 표의 모든 데이터를 되돌려줍니다.
반환 값은QuerySet 유형입니다.
조회 집합
filter
충족된 데이터를 반환합니다.
반환 값은QuerySet 유형입니다.
매개 변수 쓰기 쿼리 조건.
exclude
부적합한 데이터를 반환합니다.
반환 값은QuerySet 유형입니다.
매개 변수 쓰기 쿼리 조건.
order_by
질의 결과를 정렬합니다.
반환 값은 QuerySet 유형 매개 변수에서 어떤 필드에 따라 정렬되는지 기록합니다.
all, filter, exclude, order_by 이 함수들을 호출하면 쿼리 세트가 생성됩니다.QuerySet 클래스 대상은 위의 모든 함수를 계속 호출할 수 있습니다.
조회 집합 특성 1) 타성 조회: 조회가 집중된 데이터를 실제로 사용할 때만 데이터베이스에 대한 진정한 조회가 발생한다.2) 캐시: 같은 조회 집합을 사용할 때 처음 사용할 때 실제 데이터베이스에 대한 조회가 발생하고 결과를 캐시한 다음에 이 조회 집합을 사용할 때 캐시에 있는 결과를 사용한다.3) 목록과 같은 쿼리 집합의 결과를 제한하기 위해 쿼리 집합을 낙찰하거나 슬라이드할 수 있다.하나의 쿼리 집합을 슬라이드하면 새로운 쿼리 집합이 생성되며, 아래 표시는 마이너스로 허용되지 않습니다.
2 .연관 작업
2.1 일대다 작업
학생과 학급은 일대다 관계로, 한 학생은 한 학급에 대응하고, 한 학급은 여러 학생에 대응한다.
학생을 통해 반의 타이틀을 찾다
stu_obj = model.Stuents.objects.get(id=1)
cls_title = stu_obj.cls.title
##
cls_obj = model.Stuents.objects.filter(id=1).values_list("classinfo__title")
1학년 1반의 모든 학생을 조회하다
cls_obj = models.ClassInfo.objects.filter(title='1 1 ')
stu_list = cls_obj.students_set.all()
2.2 멀티태스킹
create
# 1 1
cls_obj = models.ClassInfo.objects.filter(title='1 1 ')
cls_obj.teachers.create(name=' ')
add
# id 1 1 1
cls_obj = models.ClassInfo.objects.filter(title='1 1 ')
teacher_obj = models.Teachers.filter(id=1)
cls_obj.teachers.add(teacher_obj)
#
teacher_list = models.Teachers.filter(id__in = [1, 2, 3, 4, 5])
cls_obj.teacher.add(*teacher_list)
# id
cls_obj.teacher.add(1)
remove 삭제
# 1 1 id 1
cls_obj = models.ClassInfo.objects.filter(title='1 1 ')
cls_obj.teachers.remove(1)
#
teacher_obj = models.Teachers.filter(id=1)
cls_obj.teachers.remove(teacher_obj)
1학년 1반 선생님
cls_obj = models.ClassInfo.objects.filter(title='1 1 ')
teachers_list = cls_obj.teachers.all()
3. 집합 및 그룹 구성
취합
집계 작업은 다음과 같습니다.
sum count avg max min
aggregate: 이 함수를 호출해서 집합을 사용합니다.되돌아오는 값은 사전을 사용하기 전에 집합 클래스를 가져와야 한다. 다음과 같은 예는
from django.db.models import Sum,Count,Max,Min,Avg
#
stu_count = models.Stuents.objects.all().aggregate(Count('id'))
조를 나누다
그룹화annotate 사용()
#
models.ClassInfo.objects.all().annotate(teacher_num=Count("teachers"))
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.