[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 공식 문서를 참고하세요.