본문 바로가기
프로젝트/Django - How Dimt?

Django poj.c B5 ) 주류가격정보 테이블 구현 / 현재 봉착한 문제 - 9일차

by Fola 2022. 4. 26.

Code B Django 5번 글, 프로젝트 9일차 (화)

 

 

 

# 문제의 원인을 정확히 이해하고 해결했다.

2022.04.27 - [프로젝트/Django - How Dimt?] - Django poj.c B6) error) blank input ValueError 해결 - 10일차

 

 

 

 

1. 주류가격정보 테이블 구현 (1)

(캡쳐) 주류 가격 정보와 가격 정보 등록 양식이 테이블 형태로 구현되어있다

 

어제 작성하고 마이그레이션 한 주류 가격 정보 모델

django/admin을 통해 몇 개의 데이터를 입력

 

데이터를 가져오는 과정은

java에서 DAO, VO, SQL 쿼리를 이용한 방법보다 훨씬 간편했다. 

 

중간에 Model field를 몇번 변경했는데,

이때 고칠 코드가 거의 없어서 좀 신기했음.

 

 

 

 

 

2. 주류가격정보 테이블 구현 (2)

 

더미 데이터와 리얼 데이터를 구분하기 위해 .filter 함수와 .exclude 함수를 사용했다.

더미/리얼 레코드 사이에 서로 다른 css 스타일을 주기 위해 거의 흡사한 코드가 두 번 반복되었다.

 

{% block %} / {% endblock %} 을 써볼까 고민했으나 코드 가독성이 너무 떨어질 것 같아 기각.

자바스크립트를 잘 이용하면 깔끔한 코드가 나올 것 같은데,

js 기초만 떼고 안 써 본 지 너무 오래돼서 일단 미뤄 두었다.

 

 

더미/리얼 레코드의 인덱스 번호 연결은

 

forloop.counter|add:price_list.count

 

를 이용해서 해결했고 만족스럽다.

 

 

 

 

 

3. 봉착한 문제

 

(캡쳐) ValueError - Field 'aged' expected a number but got ''.

 

POST method를 이용한 레코드 Create를 구현 중에 문제 봉착했다.

Model의 Integer 필드 속성에 blank=True, null=True를 주었음에도

blank input을 거절하는 상황이다.

 

( CharField는 blank input 에도 문제없이 잘 동작한다 )

 

나는 Form 클래스 없이 직접 view.py 에서 POST로 넘어온 값을 모델에 넣으려고 시도했다.

그리고 책에서 본 코드는 forms.ModelForm을 상속한 Form 클래스를 따로 작성했고,

작성한 클래스에 데이터를 먼저 넣은 후 유효성 검사를 거쳐 .save() 하고 있었다.

 

당장 드는 생각은

Django 가 내가 머릿속에 그리는 방법과는 다르게 움직이거나,

forms.ModelForm을 거치는 게 원래의 규칙 이거나.

 

내일은 책의 코드를 참고해서 다시 작성해 볼 생각.

 

 

 

 

 

4. 현재 작성 중인 view.py 코드

 

 

댓글