-
TIL 2023.04.11내일배움캠프 2023. 4. 11. 20:50
팀 프로젝트 중 문제를 겪었던 부분들~
깃허브 풀 푸쉬에서 애를 먹었는데
커밋을 하고 풀을 한 후 충돌을 해소한 뒤 다시 커밋해주면 됩니다.
다음 게시글폼에서 유저를 안넣어줘서 오류가 났던 부분입니다.
class TweetForm(forms.ModelForm): class Meta: model = TweetModel fields = ['user', 'image', 'content']
먼저 forms.py의 fields에 'user'를 안넣어주면 에러가 난다고 하시더군요.
@login_required def create_tweet(request): if request.method == 'GET': tweet_create = TweetForm() return render(request, 'tweet/create.html', {'create_tweet_form': tweet_create}) elif request.method == 'POST': user = request.user tweet_form = TweetForm(request.POST) tweet_form_post = tweet_form.save(commit=False) tweet_form_post.save() return redirect('/')
그리고 views.py에는 이렇게 작성해주셨습니다.
우선 이렇게 코드를 짜게 되면 게시글 작성할 때 폼에 유저가 들어가기 때문에 작성 시 유저를 선택하는 칸이 존재해버립니다.
그리고 저장은 잘 되겠죠 유저 정보를 받아오니까,
하지만 우리는 게시글 작성할 때 유저를 고를 수 있으면 안됩니다.
로그인한 유저 정보를 받아와야 합니다.
class TweetForm(forms.ModelForm): class Meta: model = TweetModel fields = ['image', 'content']
그래서 forms.py의 fields에선 'user'를 빼줍니다. 그러면 작성시에 유저를 선택하는 칸은 없어지겠죠?
@login_required def create_tweet(request): if request.method == 'GET': tweet_create = TweetForm() return render(request, 'tweet/create.html', {'create_tweet_form': tweet_create}) elif request.method == 'POST': user = request.user tweet_form = TweetForm(request.POST) tweet_form_post = tweet_form.save(commit=False) tweet_form_post.user = user tweet_form_post.save() return redirect('/')
그리고 views.py에는 한 줄을 추가해줍니다
tweet_form_post.user = user
tweet_form은 그냥 저장하게 될 경우 user 정보를 받아오지 않았기 때문에 에러가 납니다.
그래서 tweet_form_post 라는 변수에 임시로 저장을 해주고
tweet_form_post.user 로 유저필드를 지칭해주고 user 데이터를 저장해줍니다
그리고 tweet_form_post.save() 로 폼데이터를 저장해주면 끝
문제가 해결됩니다~
'내일배움캠프' 카테고리의 다른 글
TIL 2023.04.13 (0) 2023.04.13 TIL 2023.04.12 (0) 2023.04.12 TIL 2023.04.10 (0) 2023.04.10 WIL 내일배움캠프 4주차 (0) 2023.04.07 TIL 2023.04.07 (0) 2023.04.07