TIL - 180731
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 코드
기억해야할 점!
- test로 시작하는 파이썬 파일이 필요하다.
- test로 시작하는 메소드 이름이 필요하다.
- 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'),
)