장고는 기본적으로 Unique ID를 만듬
-> 옛날에 자바강의 들을때 ID는 어떠한 것과 연관없는 auto increment와 같은 값을 넣는게 좋다는 것과 비슷한 맥락인듯 하다.
url보면 ID가 박혀있음
on_delete는 model이 삭제 될때 어떻게 할건지를 설정하게 해줌
A계정이 house를 만들고 A계정을 삭제 했을때 어떻게 될까?
-> 이때 on_delete가 사용됨
두가지 옵션이 있음
1. house에 계정 정보를 null로 표시
상황에 따라 적절할 수 있고 아닐수도 있음
적절한 예) 결제관련: 사용자가 삭제되도 세금관련 처리를 위해 데이터가 남아있어야함
-> on_delete=models.SET_NULL
적절치 않은 예) 인스트그램 사진: 사용자가 삭제된 이후에도 해당 게시물이 남아 있는 것은 옳지 않음
-> on_delete=models.CASCADE
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")
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)
def __str__(self):
return self.name
중간에 모델에 외래키를 추가했다면 migrations 파일들을 모두 삭제하고(house,users) db(db.sqlite3)도 날려줘야함
houses의 관리자 패널에서 owner를 선택할 수 있게 되었음
'2024 > python 개발자 되기' 카테고리의 다른 글
[Day-6][Django] User Model (0) | 2024.05.21 |
---|---|
[Day-5][Django] Custom Admin, admin 속성 값 수정 (0) | 2024.05.20 |
[Day-4][Django] Custom User add Custom Fields (0) | 2024.05.20 |
[Day-3][Django] Custom User (0) | 2024.05.19 |
[Day-2][Django] User 패널 수정 (0) | 2024.05.18 |