티스토리 뷰
테이블 간 관계를 맺을 때 유의할 점은 관계는 원래 양방향 개념이지만 장고에선 한쪽 클래스에서 관계를 정의해주면 상대편 정의는 자동으로 정의가 된다. 또한 한쪽 방향으로 관계를 생성/변경 할 경우 반대방향으로도 관계가 변하게 된다.
테이블 간의 관계는 3가지가 있으며 1:N , N:N , 1:1 관계로 분류된다.
1:N
N 모델 클래스에서 foreignKey 필드 정의한다. 인자는 1 모델이다.
class Customer(models.Model):
name = models.CharField(max_length=20)
class order(models.Model):
customer = models.ForeignKey(User,null=True) # 1:N 관계 정의
product = models.CharField(max_length=100)
고객은 여러번의 주문을 할 수 있으므로 1:N 관계가 성립된다.
1:N 관계에서 1 객체를 지우게 되면 CASCADE로 동작하여 N쪽의 객체도 삭제된다.
N:N
관계를 맺고자 하는 모델 중 한쪽에 ManyToManyField 필드를 정의한다.
class People(models.Model):
name = models.CharField(max_length=20)
class Hover(models.Model):
name = models.CharField(max_length=30)
people = models.ManyToManyField(People) # N:N 관계 정의
사람은 여러개의 취미를 가지며 같은 취미를 여러사람들이 가지고 있으므로 N:N 관계가 성립된다.
연결되어있는 두 객체중 하나의 객체를 지워도 다른 객체는 지워지지 않는다.
1:1
관계를 맺고자 하는 모델 중 한쪽에 OneToOneField 필드를 정의한다.
class Place(models.Model):
name = models.CharField(max_length=20)
class Shop(models.Model):
name = models.CharField(max_length=20)
place = models.OneToOneField(Place) # 1:1 관계 정의
한 장소에는 하나의 식당이 존재하고 한 개의 식당은 하나의 장소에 위치하기 때문에 1:1 관계가 성립된다.
관계 매니저
모델 간 관계에 대한 기능 및 데이터베이스 쿼리를 담당하는 클래스이다.
관계 매니저는 객체들의 집합을 다루는 클래스이기 때문에 1:n , n:n 관계에서 사용된다.
customer.order_set
order_set는 관계 매니저 클래스의 객체이다
order.customer
N에서 1을 액세스 할때는 대상 객체가 1개이므로 관계매니저를 사용하지 않는다.
'Framework > Django' 카테고리의 다른 글
CBV success_url parameter (0) | 2018.01.16 |
---|---|
You are trying to add a non-nullable field '필드명' to post without a default 해결 (0) | 2018.01.15 |
Django auth앱 사용하여 인증하기(로그인) (0) | 2018.01.02 |
Django project 생성 (0) | 2017.12.17 |
django __str__ 메서드 (0) | 2017.12.16 |
- Total
- Today
- Yesterday
- jsp oracle 연동
- jsp tomcat 연동
- 계산기 구현
- java int to String
- 후위 표기법 계싼
- sass 설치
- 음수 10진수 음수 2진수
- selenium 새 창 크롤링
- 중위 표기법 후위 표기법
- selenium switch_to_window python
- jsp tomcat
- 2진수 음수
- 중위 표현식 후위 표현식
- 전자계산기 구현
- 후위 표기법
- selenium switch_to_window
- 2의 보수법
- java toString
- python virtualenv
- selenium 새 탭 크롤링
- 후위 표현식
- java String to int
- 후위 표기식
- 후위 표기 계산
- java parseInt
- sass 사용법
- sass
- virtualenv
- jsp 서버 연동
- 후위 표기 수식 계싼
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |