Django 노트(모델 클래스 - 관리자)
4410 단어 Django
역할:데이터베이스와 상호 작용
모든 모델 클래스는 기본적으로 하나의 관리자가 있는데
objects
objects는 Django가 자동으로 생성하는 관리자로 데이터에 대한 조회를 실현할 수 있다.objects는 모델스이다.Manger 클래스의 객체특수 조건을 만족시키기 위해 관리자를 사용자 정의할 수 있습니다
1. 관리자의 원본 조회 집합을 수정합니다 (get queryset () 방법을 다시 씁니다)
class BookInfoManager(models.Manager):
def get_queryset(self):
return super(BookInfoManager,self).get_queryset().filter(isDelete=False)
사용자 정의 관리자 이후 Django에서 기본 Objects 관리자를 생성하지 않음
2. 모델 클래스 대상의 창설 방법
BookInfo 모델 클래스
from django.db import models
class BookInfo(models.Model):
btitle=models.CharField(max_length=20)
bpub_date=models.DateTimeField(db_column='pub_date')
bread=models.IntegerField(default=0)
bcomment=models.IntegerField(default=0)
isDelete=models.BooleanField(default=False)
class Meta:
db_table='bookinfo'
#
books1=models.Manager()
books2=BookInfoManager()
모델 클래스
__init__
방법은 사용할 수 없습니다.해결 방법:
① 모델 클래스에서 클래스 방법 정의
@classmethod
def creat(cls,btitle,bpub_date):
b=BookInfo()
b.btitle=title
b.bpub_date=pub_date
b.bread=0
b.bcomment=0
b.isDelete=False
return b
② 사용자 정의 관리자에서 방법 정의(권장)
class BookInfoManager(models.Manager):
def create(self,btitle,bpub_date):
b=BookInfo()
b.btitle=title
b.bpub_date=pub_date
b.bread=0
b.bcomment=0
b.isDelete=False
return b
문법
book=BookInfo.books2.create("abc",date(1980,1,1))
조회
속성비교부(술어) = 값
btitle__contains=' '
취합from django.db.modlels import Max
list = BookInfo.books1.aggregate(Max('bpub_date'))
count = list.count()
F 객체
두 필드 비교(일반 조회는 필드와 상수 비교)
from django.db.modlels import Max,F
list = BookInfo.books1.filter(bread__gt=F('bcomment'))
Q 개체
필터의 매개 변수는 논리와 (&) 관계입니다
논리적이거나(|) Q 객체 사용
from django.db.models import Q
list = BookInfo.books1.filter(Q(pk__lt(4)|Q(btittle__contains='1'))
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 라우팅 계층 URLconf 작용 및 원리 해석URL 구성(URLconf)은 Django가 지원하는 웹 사이트의 디렉토리와 같습니다.그것의 본질은 URL과 이 URL을 호출할 보기 함수 사이의 맵표입니다. 위의 예제에서는 URL의 값을 캡처하고 위치 매개 변수로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.