전화 일대 다 관계의 파이썬 ORM을 사용하는 방법

  models.py, 나는이 두 테이블을 생성, 그들은 저자 테이블과 책 테이블, 그리고 사이에 많은 관계로 많은입니다.

1 개  # 도서 
2  도서 (models.Model) :
 . 3      ID = models.AutoField (primary_key와 = 참) #의 자동 증가 기본 키 
. 4      제목 = models.CharField (= 64 MAX_LENGTH, 널 (null) = 거짓, UNIQUE = 참)   #은 만들기 VARCHAR (64) 제목 만 필드를 비우지 
5.      제작사 = models.ForeignKey을 (=에 ' 발행인 ' , on_delete models.CASCADE =) # 및 관련 외래 키 필드 출판사 
6.  
7.  # 의 - 그리고 책을 참고 많은 관계되어야 
8 개.  클래스 저자 (models.Model)
 . 9      ID = models.AutoField (primary_key와 = 참)
 10     = models.CharField 이름 (= 16 MAX_LENGTH, 널 (null) = 거짓, UNIQUE = 참)
 . (11)      # 다음 내용으로는, 저자 테이블은 자동으로 세 번째 테이블을 생성 할 수 있습니다 생성 할 수있다 
(12)입니다      예약 = models.ManyToManyField이 (=에 ' ' ) #의 빌드 관계와 책의 많은 저자

  관련 코드의 실행 후, 세 개의 테이블을 구축 :

  상기 식에서, app_author_book 표는 다음과 같습니다 :

  세번째 테이블 값과 연관된 각각의 접촉 ID를 생성하여 표 저작하고 예약 테이블.

  지금은 내 모든 저자를 표시하는 페이지를 좋아하는 것 :

1  # 展示作者
2  데프 author_list (요청)
 3  
4      author_obj = models.Author.objects.all ()
 5       렌더링 (요청 ' author_list.html ' { ' author_list을 ' : author_obj})

  값이 과거를 통과 author_obj author_list.html 다음 페이지를 만들 :

1 <표 테두리 = " 1 " >
 2      <THEAD>
 3      <TR>
 4          编号</ 일> <제>
 5          ID <회> </ 일>
 6          作者姓名</ 일> <제>
 7          <제>作品</ 일>
 8      </ TR>
 9      </ THEAD>
 10      <TBODY>
 11      {% 에 대한 저자  author_list의 % }
 12          <TR>
 13          <TD> forloop.counter {{}} </ TD>
 14          <TD> {{저자.
ID}} </ TD> 15         <TD> author.name {{}} </ TD>
 16          <TD>
 17              {%  author.book.all % }
 18                  {% 경우 forloop.last % }
 19                      {{book.title}}
 20                   { % 다른 사람 % }
 21                      {{book.title}} |
22                  {% 이번 }
 23              {%의 ENDFOR의 % }
 24          </ TD>
 25          </ TR>
 26      {% ENDFOR % }
27      </ TBODY>
 28 </ 테이블>

  저자와 책이 많은 관계로 많은 있기 때문에 문제는이다, 그것은이 책은 여러 저자가있을 수 있습니다, 멀티 저자의 책에 대응할 수있다. 나는 각 저자의 뒷면에 자신의 작품을 보여주고 싶었다, 나는 테이블 models.py의 저자 필드에서 책을에 합류, 나는 코드의 17 개 라인 위의 그림과 같은 책 필드로 테이블 책의 데이터를 호출 할 수 있습니다, 나는 썼다 그것은 author.book.all이다, 왜 직접 저자가 여러 책을 가질 수있다 정확하게 있기 때문에, 당신은 모든 모든 책의 데이터를 표시 할 수 있습니다,하지만 당신은 단지 저자를 작성하는 경우, author.book에게 그것을 쓰는 것이 아니라, .ALL 물품. 책, 결과는 없음으로 표시됩니다. 이 일대 관계, 모든 오 기억 추가하는 것을 잊지하지 않는 경우 그래서, 기억하십시오.

  아래의 간단한 결과 :

 

추천

출처www.cnblogs.com/missdx/p/11200081.html