오늘 개발 중 자식테이블을 기준으로 부모테이블의 외래키를 참조할 때 해당되는 모든 objects 들을 가져오는 방법이 필요했다.
예를 들어 한 명의 작가가 여러명의 책을 쓸 수 있는 구조이며, 책 모델에서는 작가 모델을 ForeignKey 로 참조하고 있다. 이 때 책 모델을 기준으로 하면서, 각 책을 기술한 작가들의 이름을 모두 가져오는 것이다.
class Author(models.Model):
name = models.CharField(max_length=20)
....
class Book(models.Model):
author = models.ForeignKey("Author", on_delete=models.CASCADE)
title = models.CharField(max_length=200)
....
먼저 Book.objects.values_list("author") 를 사용하면, Book 이 현재 외래키로 참조하고 있는 Author 테이블의 Primary key value 값이 반환된다. ( 현재 Autorh 모델에서는 PK 를 따로 설정해주지 않아 auto increment 되고 있다. ) 그러면 Author 에서 해당되는 pk 데이터들을 가져오고, 해당 데이터에서 내가 필요했던 작가 이름 데이터인, name 속성을 가져오면 된다.
name_list = []
pk_list = Book.objects.values_list("author")
for pk in pk_list :
name_val = Author.objects.get(id=pk).name
name_list.append(name_val)
#참조
Making queries | Django documentation | Django
https://docs.djangoproject.com/en/1.8/topics/db/queries/#following-relationships-backward
backend django 정참조 데이터 가져오기
https://velog.io/@hwang-eunji/backend-django-%EC%A0%95%EC%B0%B8%EC%A1%B0-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0
'개발 > 웹' 카테고리의 다른 글
[Django] Ajax 로 비동기 통신하기 (0) | 2022.04.26 |
---|---|
[Plotly.js] 2,3차원 공간에서 x, y, z 좌표 연결 시각화 (0) | 2022.04.22 |
[Django] 여러개의 form 에서 데이터 받아오기 (0) | 2022.04.18 |
[JavaScript] form, input 엔터키 이벤트 안되는 문제 (0) | 2022.04.04 |