7주차 1일 TIL

서정인·2022년 6월 2일
0

TIL

목록 보기
1/9

one to many

class UserModel(AbstractUser):
    class Meta:
        db_table = "my_user"
    bio = models.TextField(max_length=500, blank=True)

class TweetModel(models.Model):
    class Meta:
        db_table = "tweet"
    author = models.ForeignKey(UserModel, on_delete=models.CASCADE)
    content = models.CharField(max_length=256)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

class TweetComment(models.Model):
    class Meta:
        db_table = "comment"
    tweet = models.ForeignKey(TweetModel, on_delete=models.CASCADE)
    author = models.ForeignKey(UserModel, on_delete=models.CASCADE)
    comment = models.CharField(max_length=256)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

한 명의 사용자가 여러 개의 글을 쓸 수 있습니다! 한 개의 글에는, 하나의 사용자만 들어가기 때문입니다.

one to one

class UserModel(AbstractUser):
		...(생략)

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    user_pk = models.IntegerField(blank=True)
    nickname = models.CharField(max_length=200, blank=True)
    point = models.IntegerField(default=0)
    phone = models.CharField(max_length=200, blank=True)

'데이터 A'와 '데이터 B'가 서로 만나서 중복이 되지 않는 값을 만들어 내는 것이 one-to-one 이라고 할 수 있습니다.

many to many

class MyTopping(models.Model):
    topping_name = models.CharField(max_length=100)

class MyPizza(models.Model):
    pizza_name = models.CharField(max_length=100)
    pizza_topping = models.ManyToManyField(MyTopping)

피자-토핑 관계도, 우리가 흔히 보는 sns에서 팔로우-팔로잉 관계도 모두 many-to-many 입니다.

profile
코딩공부

0개의 댓글