Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 성수동카페
- popupmenubutton
- 부스트코스
- FLUTTER
- removetooltip
- 상속
- 알고리즘
- DOM
- pipenv
- c언어문자열
- richtext
- 속초여행
- 정렬알고리즘
- JavaScript
- 아스키코드
- 남양주맛집
- 추상클래스
- 포인터
- 강원도속초맛집
- Django
- 건대입구맛집
- 컴퓨터과학
- python3
- 장고
- Python
- 가상환경
- 노마드코더
- 자바
- 코딩독학
- BeautifulSoup
Archives
- Today
- Total
YUYANE
Django / Model 메소드 오버라이딩 본문
model 메소드 오버라이딩
- 장고 model에는 데이터베이스 관련 작업을 담고 있는 메소드(아래 링크 참고)가 많은데, 원하는대로 커스터마이징이 가능하다.
docs.djangoproject.com/en/3.1/ref/models/instances/#model-instance-methods
- 부모 클래스를 호출하는 super()*를 사용한다.
*super() 예시
- 부모 클래스 : Animal
- 자식 클래스 : Cat
class Animal():
def __init__(self, name):
self.name = name
def say(self):
print("나는 동물이에요.")
class Cat(Animal):
def say(self):
super().say()
print("나는 고양이에요.")
cat = Cat("서당캣")
print(cat.name)
# 서당캣
cat.say()
# 나는 동물이에요.
# 나는 고양이에요.
Overriding Model.save()
- 코드 사용 예시
자식 클래스(Blog)에서 부모 클래스(Model)의 메소드 save()를 오버라이딩한다.
오버라이딩 된 메소드 save() 안에서 부모클래스의 메소드 save()를 호출하고 있다.
from django.db import models
class Blog(models.Model):
name = models.CharField(max_length=100)
tagline = models.TextField()
def save(self, *args, **kwargs):
do_something()
super().save(*args, **kwargs) # Call the "real" save() method.
do_something_else()
참고
'Framework > DJANGO' 카테고리의 다른 글
Django / view.py (0) | 2021.03.09 |
---|---|
Django / manage.py commands 커스터마이징 하기 (0) | 2021.03.07 |
Django / MEDIA_ROOT, MEDIA_URL (0) | 2021.02.24 |
Django / Managers와 QuerySet (related_name) (0) | 2021.02.24 |
Django / Meta Class & Abstract Base Class (0) | 2021.02.23 |
Comments