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 물품. 책, 결과는 없음으로 표시됩니다. 이 일대 관계, 모든 오 기억 추가하는 것을 잊지하지 않는 경우 그래서, 기억하십시오.
아래의 간단한 결과 :