본문 바로가기

💻 Deep Wide Programming/Django

Django 전반부 정리 & 복습

728x90
반응형

 

Django Model ~ Admin까지 Quick Review

Config - master folder

나머지 생성해준 폴더들은, 모두 application이다. 

application = function의 group

 

처음에,  models & admin 을 건드림. 

장고가 우리가 쓴 코드를 이용함. 파이썬 코들르 SQL문으로 자동으로 바꿔서 데이터베이스와 소통해준다. 

models.py에 적은 코드는, 장고가 알아서 데이터베이스 테이블로 만들어준다. 

 

Model은 fields로 구성되어 있다. textField, CharField, 등등등.

 

model을 직접 보려면, admin 패널을 보면 된다. 

admin.py에서 일단 modeldmf Class로 register해준다. 

@admin.register(models.User)

하단에 model에서 선언해준 변수 중 필요한 것들을 원하는 순서에 따라 언급해준다. 

변수는 fieldsets, list_display 와 같은 애들 안에 넣어주며 원하는 형태로 만들 수 있다.

장고가 admin 패널에서, register된 Model과 class를 찾은 다음에 특정 키워드를 찾을 것이다.

 

 

드디어 최근 들어서야 객체지향언어의 위대함을 이해하게 되었다.. 그동안 왜 그게 위대한지 몰랐지.

이제 체감하게 되었다. 그 편리함을. 아주 거북이처럼 성장하기는 하는구먼. 

 

TimestampedModel

core application을 새로 생성 (django-admin startapp core)

 

class TimestampedModel(models.Model):

    created = models.DateTimeField()

    updated = models.DateTimeField()

 

이렇게 해주고, 전체 모델들을 상속시키는면 불필요한 코드반복을 줄일 수 있다. 

그런데 이 모델이 데이터베이스에 들어가기를 원하지 않기 때문에, Meta class를 만든다.

 

class TimestampedModel(models.Model):
	created = models.DateTimeField()
	updated = models.DateTimeField()



Class Meta:
	abstract = True

 

여기서 abstract model은 데이터베이스에 등록되지 않는 model이다. 

 

class TimestampedModel(models.Model):
	created = models.DateTimeField(auto_now=True)
	updated = models.DateTimeField(auto_now_add=True)



Class Meta:
	abstract = True

auto_now_add = True를 하면, 해당 필드는 Model을 생성할 때마다 수시로 업데이트 한다. 

auto_now=Trues는 매번 Model을 저장할 떄마다 새로운 날짜를 get(업데이트) 할 수 있게 된다. 

 

Foreign Key

모델과 모델을 연결하는 방법.

-> 연결할 모델을 import해오고, 다음과 같이 코드를 써준다.

host = models.ForeignKey(user_models.User, on_delete=models.CASCADE)

 

728x90
반응형