-
[Django] 모델 간 데이터 연결하는 방법, 외래키(FK) 사용하기파이썬/Django 2022. 12. 27. 22:43728x90반응형
ForeignKey 사용하기
ForeignKey = 외래키
house에서 user의 정보를 컬럼으로 가져오고 싶으면 models.ForeignKey를 사용하면 된다.
owner = models.ForeignKey("참조할 모델", on_delete=)
user 정보를 참조하고 싶으면 참조할 모델에 user.User를 입력하면 된다.해당 컬럼의 정보가 삭제되었을 때 on_delete
on_delete는 해당 컬럼의 정보가 삭제되었을 때의 행동을 설정한다.on_delete=models.SET_NULL: 데이터 유지on_delete=models.CASCADE : 자동 삭제예컨대, 숙소정보의 경우 숙소 주인 host 계정이 삭제되면 숙소 정보도 같이 삭제된다.📁 houses/models.py
from django.db import models class House(models.Model): """Model Definition for Houses""" # 모델을 만들때 관례적으로 적는 것(모델에 대한 설명) name = models.CharField(max_length=140) # 적당한 길이를 가진 문자열 price_per_night = models.PositiveIntegerField( verbose_name="Price", help_text="Positive Numbers Only", ) # 양의 정수 description = models.TextField() # 긴 길이를 가진 문자열 address = models.CharField(max_length=140) pets_allowed = models.BooleanField( verbose_name="Pets allowed?", default=True, help_text="Does this house allow pets?", ) owner = models.ForeignKey("users.User", on_delete=models.CASCADE) # 외래키로 사용자의 ID인 PK가져오기 | models.ForeignKey("참조할 model", on_delete=) # on_delete는 이 컬럼의 정보가 없어졌을때의 행동을 정함 # -> on_delete=models.SET_NULL : 사용자가 계정을 삭제해도 house는 주인이 없는 상태로 남음 # -> on_delete=models.CASCADE : 사용자가 계정을 삭제하면 house도 지워짐 def __str__(self): return self.name
LIST'파이썬 > Django' 카테고리의 다른 글
[Django] common app으로 공통코드 관리하기 (0) 2022.12.30 [Django] app 생성하고 model 설정하기, 옵션 추가하기 (0) 2022.12.29 [Django] 어드민 페이지 커스텀하기 (0) 2022.12.27 [Django] app에 컬럼 추가하기 (0) 2022.12.27 [Django] 사용자 app 생성하기 _Mac (0) 2022.12.27