일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- it
- probability
- Cloud
- 암호화폐
- python
- 프로그래밍
- 파이썬
- AUTOSAR
- 아마존 웹 서비스
- 백테스트
- backtest
- 오토사
- GeorgiaTech
- 비트코인
- toefl writing
- 클라우드
- 토플 라이팅
- TOEFL
- 블록체인
- can
- Bitcoin
- 자동매매
- 토플
- 자동차sw
- 개발자
- 퀀트
- 확률
- AWS
- 백트레이더
- backtrader
- Today
- Total
Leo's Garage
Django #2 app 만들기 본문
from django.db import models
# Create your models here.
class House(models.Model):
"""Model Definition for House"""
name = models.CharField(max_length=140)
price = models.PositiveIntegerField()
description = models.TextField()
address = models.CharField(max_length=140)
Django에서 설계할 때는 마치 블럭을 쌓는 것과 같이 설계를 하게 된다.
무슨 말이냐 하면, 어떤 기능을 구현하려고 할 때, 그 기능에 필요한 데이터와 로직을 캡슐화해서 개발할 수 있게 해준다는 것이다.
그러한 개념을 Django에서는 app이라고 한다.
한 가지 app을 개발하면서 그 개념을 이해해보도록 하자
python manage.py startapp houses
위와 같이 입력하면 파일경로에 다음과 같은 파일들이 생성된다.
houses
ㄴ__pycahe__
ㄴmigrations
ㄴ__init__.py
ㄴadmin.py
ㄴapp.py
ㄴmodels.py
ㄴtests.py
ㄴviews.py
생성한 houses라는 app은 자신만의 데이터 구조와 로직을 가지는 기능의 블럭이다.
따라서 이 houses에서 사용할 데이터 구조를 만들어줄 필요가 있다.
models.py가 그 역할을 하게 된다.
해당 파일에 들어가서 아래와 같이 입력해보자
from django.db import models
# Create your models here.
class House(models.Model):
"""Model Definition for House"""
name = models.CharField(max_length=140)
price = models.PositiveIntegerField()
description = models.TextField()
address = models.CharField(max_length=140)
House라고 하는 Class를 생성하였는데. models.Model을 상속받고 있다.
이 상속받은 클래스의 속성을 사용하여 각 property들의 상세 type을 정해줄 수 있다.
왜 이렇게 각 property의 Type을 명확하게 정의하냐면 이 내용들을 Data Base에서 이해할 수 있어야 하기 때문이다.
이렇게 정의한 House라는 데이터 구조를 DB에 알려줘야 한다.
그 전에 DB가 이해할 수 있는 구조를 생성해줘야 하는데
python manage.py makemigrations
Migrations for 'houses':
houses/migrations/0001_initial.py
- Create model House
위와 같이 0001_initial.py에는
# Generated by Django 4.1.4 on 2022-12-27 14:02
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = []
operations = [
migrations.CreateModel(
name="House",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("name", models.CharField(max_length=140)),
("price", models.PositiveIntegerField()),
("description", models.TextField()),
("address", models.CharField(max_length=140)),
],
),
]
Djago가 model.py를 참고하여 자동 생성된 코드가 나오게 된다.
이 코드를 통해서 Data Base가 이해할 수 있는 데이터 구조를 생성하게 된다 .
또한 해당 데이터를 admin 화면에서 수정할 수 있게 하려면, admin.py를 수정해야 한다.
admin.py를 아래와 같이 수정하자
from django.contrib import admin
from .models import House
# Register your models here.
@admin.register(House)
class HouseAdmin(admin.ModelAdmin):
pass
# only inherit
pass라고만 입력 시, 오로지 상속받은 클래스 내용을 그대로 사용하겠다는 것이다.
자 이제 Data Base에 해당 내용을 전달하도록 하자.
python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, houses, sessions
Running migrations:
자 이제 houses에 대한 데이터 구조도 이해하게 되었다.
위와 같이 Houses에 대한 내용이 admin 페이지에 나타나게 된다.
House를 클릭해서 들어가면
위와 같이 각각 property들을 수정할 수 있는 수정 페이지가 나타나게 된다.
'Study > Django' 카테고리의 다른 글
Django #6 Make models more - 1 (0) | 2023.01.02 |
---|---|
Django #5 Users App custom -2 (0) | 2023.01.02 |
Django #4 Users App custom -1 (0) | 2022.12.30 |
Django #3 admin 기능 추가해보기 (0) | 2022.12.28 |
Django #1 프로젝트 셋업 및 기본 동작 확인 (0) | 2022.12.27 |