728x90
반응형
Django는 query문을 Django만의 문법으로 편하게 쓸수 있는 ORM Query를 제공
다른 테이블에 두고 연결해서 쓰는 ForeignKey나 ManyToMany field
ForeignKey와 ManyToMany의 몇가지 사용 예제를 정리
ForeignKey 등을 models.py에서 설정할 때, 호출할 때 이름으로 related_name 으로 별도 설정을 할 수 있습니다.
하지 않으면 호출할 때 default로
선언한 ForeignKey에 대해서 _set의 형태로 호출해서 씁니다.
예를 들어
Class Book(models.Model):
book = models.CharField()
author = models.ForeignKey("Author", on_delete=models.CASCADE)
Class Author(models.Model):
writer = models.CharField
위와 같이 Book이 Author를 정참조 - Author가 Book을 역참조 하는 경우
어떻게 호출하는지를 살펴봅시다.
1) 정참조의 경우 해당 Table에서 정참조 관계의 다른 테이블을 불러오는 경우
books = Book.objects.all()
for book in books:
book.author.all()
2) 정참조의 경우 filter등의 Django ORM Query문을 쓰는 경우(** 역참조인 경우에도 같은 방식)
filtered_books = Book.objects.filter(author__writer="EXWRITER")
1-1) 역참조의 경우 해당 Table에서 역참조 관계의 다른 테이블을 불러오는 경우
authors = Author.objects.all()
for author in authors:
author.book_set.all()
역참조 인 경우 related_name 설정 안했으면 _set 형태로 불러오
2-1) 2)와 마찬가지로 역참조의 filter등을 쓰는 경우와 같다.
filtered_authors = Author.objects.filter(book__author="EXBOOK")
default는 id 값을 기준으로 찾는다.
default값 외에 원하는 값으로 찾는다면 역참조이든 정참조이든 filter 등의 ORM query문에서 찾는 경우에는 (Class_Field의 형태)
728x90
반응형
'Python > Django' 카테고리의 다른 글
Django not null CharField objects.create # not null 임에도 object가 생성되는 경우 # unpack # ** (0) | 2023.02.16 |
---|---|
Django app 위치 변경 # + 생성 (0) | 2023.02.06 |
Django Template, render_to_string # backend에서 data 받기 #render_to_string #loader (0) | 2023.01.29 |
이미지 업로드: Django ImageField # Ajax (0) | 2023.01.26 |
Django Template filter: {% with %} (0) | 2023.01.25 |