-
[Django] 관계(Relationship) 설정하기 many to many, one to may, many to one파이썬/Django 2022. 12. 31. 03:34728x90반응형
one to may 일대일 관계
User => [Room1, Room2, Room3]
many to one 다대일 관계
[Room1, Room2, Room3] => User
many to many 다대다 관계
[Amenity1, Amenity2, Amenity3] => [Room1, Room2, Room3]
Room 과 Amenity 사이의 관계(Relationship) 만들기
어메니티는 여러 개의 방에 복수의 어메니티가 존재할 수 있으므로 다 대 다 (N:M) 관계이다.
amenities = models.ManyToManyField( "rooms.Amenity", )
위 코드를 Room 클래스 안에 넣어준다.
전체 코드
📁 rooms/model.py
from django.db import models from common.models import CommonModel class Room(CommonModel): """Room Model Definition""" class RoomKindChoices(models.TextChoices): ENTIRE_PLACE = ("entire_place", "Entire Place") PRIVATE_ROOM = ("private_room", "Private Room") SHARED_ROOM = ("shared_room", "Shared Room") country = models.CharField(max_length=50, default="한국") city = models.CharField(max_length=80, default="서울") price = models.PositiveIntegerField() rooms = models.PositiveIntegerField() toilets = models.PositiveIntegerField() description = models.TextField() address = models.CharField(max_length=250,) pet_friendly = models.BooleanField(default=True) kind = models.CharField(max_length=20, choices=RoomKindChoices.choices,) owner = models.ForeignKey("users.User", on_delete=models.CASCADE) # Room 과 Amenity 관계 설정해주기 amenities = models.ManyToManyField( "rooms.Amenity", ) class Amenity(CommonModel): """ Amenity Definition """ name = models.CharField(max_length=150,) description = models.CharField(max_length=150, null=True, blank=True)
LIST'파이썬 > Django' 카테고리의 다른 글
[Django] Reverse Accessors, 외래키 Foreign Key (0) 2023.01.03 [Django] ORM, QuerySet, Lookup (0) 2023.01.03 [Django] common app으로 공통코드 관리하기 (0) 2022.12.30 [Django] app 생성하고 model 설정하기, 옵션 추가하기 (0) 2022.12.29 [Django] 모델 간 데이터 연결하는 방법, 외래키(FK) 사용하기 (0) 2022.12.27