데이터 시딩을 통해 더미데이터를 추가했지만,유효성이 관리되지 않는다. 따라서 본 포스팅은<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()

&특수문자가 모두 제거됨
수정일이 현재시간으로 변경됨