[Django] 장고 Models를 활용한 데이터베이스 처리#1_장고 모델(ORM) 소개

아직·2022년 6월 21일
0
post-thumbnail

1)

가상 환경-프로젝트 아래 instagram 앱을 만들어주고 프로젝트 앱의 settings와 urls에 이를 등록해준 다음, -python manage.py runserver 실행

path('instagram/', include('instagram.urls')),
NameError: name 'include' is not defined
오류 발생

프로젝트 앱의 urls.py의
from django.urls import path
부분을
from django.urls import path, include
로 변경 후 해결

2)
Input

python manage.py sqlmigrate instagram 0001_inital

Output

CREATE TABLE "instagram_post" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "message" text NOT NULL, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL);
COMMIT;

앞에서 "python manage.py makemigrations instagram" 이후 "python manage.py migrate instagram"을 통해서 마이그레이션 파일을 생성하고 적용했다. 그리고 위 과정을 통해서 테이블이 생성되고 실제로 db에 들어가는 query를 볼 수 있다. 심지어 지정하지 않은 'id' 필드마저도.

2)

from django.contrib import admin
from django.urls import path, include
...
urlpatterns = [
    path('admin/', admin.site.urls),

"admin/로 시작하는 주소 요청에 대해서는 django.contrib에 있는 admin 앱에서 처리하겠다."

3)

instagram 앱에서 만든 모델을 admin에서 사용하기 위해서는 admin.py에 따로 등록을 해줘야한다.

4)

class Post(models.Model):
    message = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

auto_now_add는 Post 모델을 통해서 record가 db에 insert될 때 자동으로 입력되는 명령이라서 TextField처럼 표시되지 않는다.

5)

@admin.register(Post)
class PostAdmin(admin.ModelAdmin):

".models에서 import한 Post란 class를 감싸서 기능을 바꿀래."

"PostAdmin이란 class를 만드는데, 위에서 import한 admin에서의 ModelAdmin을 상속 받겠다."

0개의 댓글