WinGyu_coder

Python, Django 장고로 모의투자 서비스 제작하기 (5) - Django models.py 모델 필드 정의하기 본문

Django 백엔드의 모든것

Python, Django 장고로 모의투자 서비스 제작하기 (5) - Django models.py 모델 필드 정의하기

WinGyu 2024. 2. 26. 22:56

이전 포스트

Python, Django 장고로 모의투자 서비스 제작하기 (4) - Django 프로젝트 시작하기, APP 제작하기 (startproject, startapp)

https://wingyu-story.tistory.com/133

 

Python, Django 장고로 모의투자 서비스 제작하기 (4) - Django 프로젝트 시작하기, APP 제작하기 (startproj

이전 포스트 Python, Django 장고로 모의투자 서비스 제작하기 (3) - Docker 로 Mysql DB 생성하기 https://wingyu-story.tistory.com/132 Python, Django 장고로 모의투자 서비스 제작하기 (3) - Docker 로 Mysql DB 생성하기

wingyu-story.tistory.com

 

깃 허브 주소 

https://github.com/decembaek/auto_stock_django

 

GitHub - decembaek/auto_stock_django

Contribute to decembaek/auto_stock_django development by creating an account on GitHub.

github.com


드디어,, 국내 주식 모델을 정의할때가 왔다. 

 

Django models.py 파일에 모델 정의 해보자.

 

저번시간에 만든 korea_stock 앱에 들어가서 models.py 파일을 열어보자.

(필자는 작업을 좀 진행해서 파일이 몇개가 더 있다, 신경쓰지 말도록 하자,,)

 

models.py 파일을 열어서 모델 정의를 해줄거다. 

 

(2) 번째 Django 포스트에 보면 엑셀파일 3가지가 있었을거다. 

https://wingyu-story.tistory.com/131

 

Python, Django 장고로 모의투자 서비스 제작하기 (2) - 주식 종목 코드, 섹터 코드, 표준산업코드 가

https://github.com/decembaek/auto_stock_django 깃허브 주소 GitHub - decembaek/auto_stock_django Contribute to decembaek/auto_stock_django development by creating an account on GitHub. github.com https://wingyu-story.tistory.com/130 Python, Django 장

wingyu-story.tistory.com

위 주소로 접속하면 그때 포스팅 게시물을 볼 수 있다. 

 

3가지 엑셀 파일이 있는데, 그 중 KSIC 한국 표준산업분류코드 있는 파일에 대한 모델부터 정의해보자.

# 004 반도체/반도체장비	029460
class KSICCodeModel(models.Model):
    theme_code = models.CharField(default="", max_length=100)  # 테마코드
    theme_name = models.CharField(default="", max_length=200)  # 테마명
    ksic_code = models.CharField(default="", max_length=100)  # 표준산업분류코드

 

이렇게 정의 했다. 쉽게 설명하면 models.CharField 는 문자열을 작성하는 필드이다. 

 

max_length 를 일부러 길게 설정했다. 원래라면 정의서에 맞게 길이를 조절하는것이 정석이다.

(가끔 input 데이터 형태가 달라 생기는 오류가 싫으면 좀 널널하게 하는 방법도 있다.)

 

그다음 섹터 코드다. 업종 코드 및 업종명이 나온 데이터가 있다.

# 업종코드   업종명
# 1001	01KOSDAQ
class KisSectorModel(models.Model):
    sector_code = models.CharField(
        default="", max_length=50, primary_key=True
    )  # 업종 코드
    sector_name = models.CharField(default="", max_length=200)  # 업종명

 

이것도 CharField를 통해 문자열로 정의해준다.

 

위에 보면 알겠지만 예시값을 주석처리해둬서 참고하면 좋다.

 

그 다음 거의 메인 하이라이트인 주식 종목 코드 목록이다! 

필자는 최신 주식 종목코드까지 있는 파일을 업로드 해두었다. (2) 게시판에 가면 있다.

 

# 주식 종목 코드 모델
class StockCodeModel(models.Model):
    standard_code = models.CharField(default="", max_length=50)  # 표준코드
    code = models.CharField(default="", max_length=50, primary_key=True)  # 단축코드
    name = models.CharField(default="", max_length=100)  # 한글 종목명
    stock_name = models.CharField(default="", max_length=100)  # 한글 종목약명
    en_name = models.CharField(default="", max_length=100)  # 영문 종목명
    stock_open_date = models.DateField()  # 상장일
    market = models.CharField(default="", max_length=50)  # 시장 구분
    stock_kind = models.CharField(default="", max_length=30)  # 증권 구분
    affiliated = models.CharField(default="", max_length=30)  # 소속부
    stock_type = models.CharField(default="", max_length=30)  # 주식종류
    face_value = models.DecimalField(max_digits=10, decimal_places=2)  # 액면가
    total_stock_count = models.DecimalField(
        max_digits=20, decimal_places=2
    )  # 상장주식수

 

자 굉장히 길다,   

 

CharField는 알거라 믿고 다른 필드만 설명하겠다. 

우선 Django 는 모델 정의시 자동으로 id (고유번호) 를 만들어준다. 명칭은 PK (primary_key) 라고한다.

 

고유번호를 지정함으로써 데이터를 찾아갈 수 있게 해준다. 주식 종목 코드 같은 경우 종목 코드가 고유하기 때문에

주식 종목 코드를 primay_key=True 로 지정해주었다 ( 참고로 pk는 1개만 지정가능하다 )

 

그리고 DecimalField가 보일것이다. 이것은 소수점까지 정확한 수치를 작성할때 쓰이는 필드이다. 

소수점 정의 및 최대 길이도 지정이 가능하다. 공식 문서 및 예제들을 보면 금액 관련은 이 필드를 쓴다고 보면 된다.

 

 

자 오늘은 주식 종목 코드, 섹터코드, 한국표준산업분류코드 데이터를 저장할 models.py 를 정의해봤다.

 

다음 시간에는 정의한 파일을 가지고 데이터를 DB에 저장해볼거다. 

 

------------------------------------------------------------

모의투자 웹 프론트 개발자를 구합니다.. 

사이트 프로젝트, 포트폴리오로가 필요하신분이면 연락주세요.

기술은 React, Vue, vanila JS, JQuery 다 상관 없습니다.

 

연락은 아래 이메일 또는 댓글로 주시면 됩니다. 감사합니다

email : tmdrbpp123@gmail.com

출처: https://wingyu-story.tistory.com/131 [WinGyu_coder:티스토리]