>  기사  >  백엔드 개발  >  Django의 일반적인 ORM 작업 예제 소개

Django의 일반적인 ORM 작업 예제 소개

巴扎黑
巴扎黑원래의
2017-09-15 10:50:331613검색

아래 편집기는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.