https://docs.djangoproject.com/en/4.1/topics/db/examples/many_to_one/
디비 구성을 하다보면 한개의 모델에 여러개의 다른 모델을 연결하고 싶을때가 있다.
결국 모델간에 1:N 대응을 만드는 일이다.
코드로는 아래와 같다.
from django.db import models
class Reporter(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
email = models.EmailField()
def __str__(self):
return "%s %s" % (self.first_name, self.last_name)
class Article(models.Model):
headline = models.CharField(max_length=100)
pub_date = models.DateField()
reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)
def __str__(self):
return self.headline
class Meta:
ordering = ['headline']
말로 풀어서 말해보면,
한명의 기자는 여러개의 기사를 가질 수 있다.
즉, 한명의 기자는 기사를 0개 가질수도 있고, 1개 가질수도 있고, 여러개 가질수도 있다는 말이다.
아래 예시를 보면 Article이 N개에 해당할때 Article안에 ForeignKey로 Reporter를 써준다. (개인적으로는 이 부분이 가장 햇갈렸다, ForeignKey를 어디에 써줄지, 결국 장고에서 테이블에 접근하는 코드를 구현한다고 생각하면, 떠오르기 더 쉽다.)
우리는 결국 디비 테이블에 로우를 채우는 것이였다.
'백엔드' 카테고리의 다른 글
<장고 django> 장고 Search Form & Request Data 만들기 (0) | 2022.05.17 |
---|---|
<장고 Django> Register Model in the Admin, 어드민 페이지에 모델 추가하기. (0) | 2022.05.17 |
<장고> Super Users, Staff Users & the Django Admin (0) | 2022.05.17 |
<장고 django> Dynamic URL Routing, 동적 url 라우팅하기 (0) | 2022.05.17 |
<장고 Django> 장고 강의 추천3, 18강 뷰에서 데이터를 리스트로 표현하기 (0) | 2022.05.16 |