아래 편집기는 Django에서 일반적으로 사용되는 ORM 작업에 대한 자세한 설명을 제공합니다. 편집자님이 꽤 좋다고 생각하셔서 지금 공유하고 모두에게 참고용으로 드리고자 합니다. 편집기를 따라 살펴보겠습니다
Django 프로세스:
1 Django 프로젝트 만들기: django-admin startproject projectname
2 애플리케이션 만들기: python prepare.py startapp appname
3 컨트롤러에서 (urls .py) url과 view 함수 간의 매핑 관계 생성(일대일 대응)
4 view 함수 생성 및 로직 코드 완성
5 데이터베이스에서 컬렉션 객체 가져오기
5 Embed 데이터베이스 변수를 렌더링용 템플릿에 추가합니다(렌더링 방법)
6 렌더링된 HTML 페이지를 클라이언트
URL: 프로토콜+도메인 이름+포트+경로
프로토콜: http
도메인 이름: www.cnblogs. com
Port: 80
Path: yuanchenqi/articles/6811632 .html
Data: a=1
URL 구성의 정규식은 url
TEMPALTE(템플릿)의 경로 부분과 일치합니다. HTML 코드 + 논리 제어 코드
논리 제어 구문: {{}} 렌더링 변수 필터: {{var|method:parameter}}
{% %} 렌더링 태그
{% if %}
{% for %}
{% url % }
{% url %}
맞춤 필터 및 simpletag:
(1) 앱에서 templatetags 모듈 생성(필수)
(2) my_tags와 같은 .py 파일을 생성합니다. py
from django import template
register = template .Library()
@register.filter
def filter_multi(v1,v2):
return v1 * v2
(3) 다음과 같은 .py 파일을 생성합니다. my_tags.py
사용자 정의 simple_tag 및 필터 사용 이전에 생성된 my_tags.py를 html 파일로 가져옵니다: {% load my_tags %}
(4) simple_tag 및 필터 사용:
{% load xxx %} # 첫 번째 줄
# num=12
{{ num |filter_multi:2 }} #24
요약:
filter: 하나의 매개변수만 허용하지만 if 및 기타 문을 사용할 수 있습니다
simpletag :여러 매개변수를 허용할 수 있지만 사용할 수 없습니다.
ORM과 같은 If 문:
테이블 간 관계:
일대다 외래 키 필드는 하위 테이블에 있어야 합니다(일대다 -to-many 테이블) Foreign KEY
세 번째 테이블의 다대다(Many-to-many)는 두 개의 Foreign KEY
를 통해 일대일 외래키 필드 기반의 고유 제약 조건을 추가하여 구현됩니다.
mysql 방법 사용
1 설정 파일 db 구성 변경
2 __init__ 파일의 드라이버 구성 변경
ORM을 sql 구성으로 변경
로그인 설정 구성
Table.object.filter( ): [obj1, obj2]와 같은 컬렉션 객체를 얻는다
Table.object.get(): 얻는 것은 모델 객체
일대다 레코드 추가:
# 방법 1 :
# Book.objects.create(id=1,title="python",publication_date="2017-03-04",price=88.8,publisher_id=1)
#방법 2
p1=Publisher.objects .get(이름 "인민대학 출판부")
Book.objects.create(id=2,title="python",publication_date="2017-05-04",price=98.8,publisher=p1)
에서 models.py 파일
authors=models.ManyToManyField("Author")에서 다대다 관계를 생성합니다. #다대다 표가 아래에 있는 경우 따옴표를 추가해야 합니다.
다대- 많은 추가
ManyToMany에는 다음 한 가지 방법만 추가할 수 있습니다.
book.authors.add(*[author1,author2])
book.authors.remove(*[author1,author2])
참고: book_obj를 이해하세요. Publisher
book_obj.authors
자체 제작한 세 번째 Zhang 테이블
class Book2Author(models.Model):
author=models.ForeignKey("저자")
Book= models.ForeignKey("Book")
# 그러면 다른 방법이 있습니다:
author_obj=models.Author .objects.filter(id=2)[0]
book_obj =models.Book.objects.filter(id=3)[0]
s=models.Book2Author .objects.create(author_id=1,Book_id=2)
s.save()
s=models.Book2Author(author=author_obj,Book_id=1)
s.save()
.value 및 .value_list는 book table book
#값을 사용한 결과는 객체가 아니지만 객체의 필드 또는 속성이기도 합니다. 결과도 querySet
ret1=Book.objects.values('title')
ret1_list = Book입니다. .objects.values_list('title')
print('ret1 is : ',ret1) # 결과는 다음과 같습니다: ret1 is :
print(ret1_list) # 결과는 querySet
업데이트 작업과 수정 저장 작업의 차이점:
update는 지정된 필드를 설정하고 모든 필드를 설정하므로 업데이트가 더 효율적입니다.
쿼리:
확장된 콘텐츠
# 쿼리 관련 API:
# <1>filter(**kwargs): 주어진 필터 조건과 일치하는 객체를 포함합니다
# <2>all(): 모든 결과 쿼리
# <3>get(** kwargs): 반환 지정된 필터링 조건과 일치하는 개체는 하나뿐입니다. 필터링 조건과 일치하는 개체가 두 개 이상 있거나 없으면 오류가 발생합니다.
#------------다음 메소드는 모두 쿼리 결과를 처리하기 위한 것입니다. 예를 들어,objects.filter.values()---------
# <4> 값(*필드): 특수 QuerySet인 ValueQuerySet을 반환합니다. 실행 후 얻는 것은 일련의 모델 인스턴스화 개체가 아니라 반복 가능한 사전 시퀀스입니다.
# <5>exclude(**kwargs ): 여기에는 다음이 포함됩니다. 주어진 필터 조건과 일치하지 않는 개체
# <6>order_by(*field): 쿼리 결과 정렬
# <7>reverse(): 쿼리 결과를 반전
# <8>distinct( ): 반환된 결과에서 중복 레코드를 제거합니다
# <9>values_list(*field): 일련의 튜플을 반환하며, 값은 사전 시퀀스를 반환합니다.
# < ;10>count(): 데이터베이스 내 쿼리(QuerySet)와 일치하는 객체의 개수를 반환합니다.
# <11>first(): 첫 번째 레코드를 반환
# <12>last(): 마지막 레코드를 반환
# <13>exists(): QuerySet에 데이터가 포함되어 있으면 True를 반환하고, 그렇지 않으면 True를 반환합니다. 거짓을 반환
위 내용은 Django의 일반적인 ORM 작업 예제 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!