데이터 시딩
을 통해 더미데이터를 추가했지만,유효성
이 관리되지 않는다. 따라서 본 포스팅은<dear>
프로젝트에 추가된 더미데이터를 유효성 검증에 통과된 데이터로 변경하는 방법을 알아본다.
데이터 시딩
을 통해 생성된 데이터 중,유효성
검증에 통과하지 못한 데이터는 다음과 같다.
특수문자
&
이 포함됨
이미지에는 보이지 않지만 수정일이 생성일보다 빠름
수정일이 생성일보다 빠른 게시글을 찾아
수정일
을현재 시간
으로 변경하고
내용에
&
가 포함된 게시글을 찾아&
를 삭제하는 파이썬 파일을 작성한다.
파일 이름은
validate_data
로 생성했다.
#posts > validate_data.py
from .models import Post
def validate_post():
posts = Post.objects.all()
for post in posts:
if "&" in post.content:
print(post.id, "번 글에 &가 있음")
post.content = post.content.replace("&", " ")
post.save()
if post.dt_modified < post.dt_created:
print(post.id, "번 글의 수정일이 생성일보다 과거임")
post.save()
Post 모델
을 불러온다.from .models import Post
validate_post
이름의 함수를 작성한다.def validate_post():
변수 posts
에Post 모델의 모든 데이터
를 지정한다.posts = Post.objects.all()
posts
에 담긴 데이터를post
라는 이름으로 하나씩 불러온다.for post in posts:
만약
&
특수문자가post
의content 필드
에 있다면 해당post
의id
를 호출한다. 그리고 해당post
의content 필드
에서&
를로 대체한다. 이후
post
를 저장한다.if "&" in post.content: print(post.id, "번 글에 &가 있음") post.content = post.content.replace("&", " ") post.save()
만약
post
의dt_modified 필드
의 값이de_created
보다 낮다면, 해당post
의id
를 호출한다. 그리고 해당post
를 저장한다.if post.dt_modified < post.dt_created: print(post.id, "번 글의 수정일이 생성일보다 과거임") post.save()
(
dt_modified
는auto_now
옵션을True
로 정의했기 때문에 저장하면 현재시간으로 변경된다.)
작성된 파일을
shell
환경에서 사용한다.
python manage.py shell
작성된 파일의
validate_post
함수를 불러온다.
from posts.validate_data import validate_post
불러온 함수를 사용한다.
validate_post()
&
특수문자가 모두 제거됨
수정일이 현재시간으로 변경됨