python manage.py flush
기본적으로 역참조는 나를 참조하고 있는 테이블에
역으로 참조할 때 사용된다.
A라는 메인 테이블이 있고 B라는 서브 테이블이 있을 때
B의 특정 항목에 foreign key를 설정해
A 테이블의 pk 값을 참조할 수 있는데
이건 정참조이고 A에서 B 테이블로 접근하는 것이 역참조이다.
_set, related_name 등의 역참조 방법들이 있는데
이때 내가 헤맨 부분이 있어 기록한다.
p = Product.objects.get(id=pk)
p.productimage_set.all()
modelys.py에는 Product와 ProductImage라는
클래스가 각각 존재하며 이들은 DB에
products, product_images라는 이름의 테이블로 존재한다.
역참조로 product_images 테이블에 접근해야 하는데
클래스명도 안 되고 테이블명도 안 되고 왜 접근이 안 되는지,
분명 과제 때 잘 접근했는데 한참 헤맸었다.
위에 기재했듯이 역참조로 해당 테이블에 접근할 때는
클래스명을 소문자로 넣어주면 된다. (복수 아님)