[python] Django에서 데이터베이스 모델 간 관계 설정하기
Django는 데이터베이스 모델 간의 다양한 관계를 정의하는 기능을 제공합니다. 이를 통해 여러 데이터베이스 테이블 간의 관련성을 정의하고 복잡한 데이터 구조를 관리할 수 있습니다.
1. 일대다 (One-to-Many) 관계
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
위 예제에서 Book 모델은 Author 모델과의 일대다 관계를 정의하고 있습니다. 하나의 저자(Author)가 여러 책(Book)을 쓸 수 있으므로 Book 모델에는 ForeignKey를 사용하여 Author 모델과의 관계를 표현했습니다.
2. 다대다 (Many-to-Many) 관계
class Movie(models.Model):
title = models.CharField(max_length=100)
actors = models.ManyToManyField(Actor)
class Actor(models.Model):
name = models.CharField(max_length=100)
위 코드에서 Movie 모델과 Actor 모델은 다대다 관계를 갖습니다. 하나의 영화(Movie)에는 여러 배우(Actor)가 출연할 수 있고, 반대로 하나의 배우(Actor)도 여러 영화(Movie)에 출연할 수 있습니다. 이러한 다대다 관계는 ManyToManyField를 사용하여 정의됩니다.
3. 일대일 (One-to-One) 관계
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField()
위의 코드에서 UserProfile 모델은 User 모델과 일대일 관계를 가지고 있습니다. 한 유저(User)에 대해 하나의 프로필(UserProfile)이 존재함을 나타내기 위해 OneToOneField를 사용하여 정의했습니다.
결론
Django를 사용하여 데이터베이스 모델 간의 관계를 설정하는 방법을 알아보았습니다. 각 관계 유형에 맞게 ForeignKey, ManyToManyField, OneToOneField를 사용하여 모델 간의 관계를 정의할 수 있습니다.
더 자세한 내용은 Django 공식 문서를 참고하세요.