YEOJIN-DEV

TIL - 180731

July 31, 2018 | 1 Minute Read

7월 31일 TIL : 배민찬 카피 프로젝트

git rebase –squash

rebase 명령어를 실행할 때 –squesh 옵션을 주면 현재 브랜치의 커밋을 하나로 모아서 rebase한다.

./manage.py migrate –fake <프로젝트 앱> <마이그레이션 번호>

django.db.utils.ProgrammingError: Column ___ of relation ___ already exists

위 에러 메시지는 마이그레이션 하려는 테이블에 이미 마이그레이션하려는 내용이 반영되어 있음을 의미한다. 이에 대응하기 위해서 migrate --fake 명령어를 쓴다. –fake 옵션은 해당 마이그레이션 파일을 이미 실행한 것으로 취급하고 넘긴다.

DockerHub에 push

push를 할 때 docker login 명령어 실행을 요구할 수 있다.

$ docker tag <내 이미지> <DockerHub ID/이미지 이름>
$ docker push <내 이미지>

./manage.py dbshell

현재 설정한 데이터베이스의 CLI로 바로 들어갈 수 있다. psql을 쓰지 않아도 된다!

django.db.utils.IntegrityError: duplicate key value violates unique constraint _ Detail: Key(_)=() already exists.

해당 필드가 null=False이면서 default 설정이 없는 상태에서 해당 필드 입력값 없이 모델의 인스턴스를 생성하려고 할 때 위와 같은 에러 발생하였음.

Django Test 코드

기억해야할 점!

  1. test로 시작하는 파이썬 파일이 필요하다.
  2. test로 시작하는 메소드 이름이 필요하다.
  3. BASE_DIR에서 ./manage.py test 명령어 실행한다.

[이 커밋]에서 확인 가능하다.

딕셔너리 컴프리헨션

콜론(:)을 기준으로 key, value를 나눈다.

dummy_user_info = {
    # 무작위 문자열 생성
    field: ''.join(random.choices(string.ascii_uppercase + string.digits, k=10)) for field in user_fields
}

format() 메소드로 원하는 형식의 숫자 문자열 생성

아래 코드에서 ‘02’는 두 글자의 숫자이되, 만약 입력받은 숫자가 1개이면 앞에 0을 붙여준다는 의미이다.

# 무작위 날짜 생성(datetime 형식의 str 인스턴스)
dummy_user_info['birthday'] = '{}-{}-{}'.format(
    str(random.randint(1950, 2018)),
    format(random.randint(1, 12), '02'),
    format(random.randint(1, 30), '02'),
)