한 명의 주인이 여러마리의 고양이를 소유하는 경우
한 명의 사용자가 여러개의 사진을 올릴 수 있는 경우
한명의 사용자가 여러개의 댓글을 소유하는 경우 = 댓글 여러개가 한명의 사용자를 가지는 경우
한 개의 사진이 여러개의 댓글을 갖는 경우
한개의 사진이 여러개의 좋아요를 갖는(받은) 경우
from django.db import models
class Owner(models.Model):
name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
age = models.IntegerField()
from django.db import models
from . import Owner
class Cat(models.Model):
name = models.CharField(max_length=30)
breed = models.CharField(max_length=20)
grumpy = models.BooleanField(default=False)
owner = models.ForeignKey(Owner, null=True) // Owner의 ID필드값이 들어감
nicolas = Owner.objects.create(
name = "Nicolas",
last_name = "Serrano",
age = 78
)
bunns = Cat.objects.get(id=2)
bunns.owner = nicolas
bunns.save()
conrad = Cat.objects.get(id=3)
conrad.owner = nicolas
conrad.save()
bunns = Cat.objects.get(id=2)
print(bunns.breed) # British
print(bunns.owner.age) # 78 -> foreign key로 연결된 정보를 가져올 수도 있음
2) Owner의 정보에서 Cat의 정보를 얻는 것.
nocolas = Owner.objects.get(pk=1)
noco_cats = nocolas.cat_set.all()
ManyToManyField를 이용해야함
ForeignKey는 빈칸으로 비어있으면 안돼서 null=True를 해줬는데,
ManyToManyField는 비어있어도 돼서 아무것도 안해줘도 됨.
from django.db import models
class Owner(models.Model):
name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
age = models.IntegerField()
following = models.ManyToManyField('self')
followers = models.ManyToManyField('self')
Owner.objects.create(
name = "Pedro",
last_name = "Gomez",
age = 44
)
Owner.objects.create(
name = "Jisu",
last_name = "Kimchi",
age = 12
)
Owner.objects.create(
name = "Manico",
last_name = "Machiavelli",
age = 44
)
nicolas = Owner.objects.get(pk=1)
pedro = Owner.objects.get(pk=2)
jisu = Owner.objects.get(pk=3)
nicolas.followers.add(jisu, pedro)