form.save() // 함수기반 뷰에 대해서 질문드립니다
229
작성한 질문수 49
답변 1
0
안녕하세요.
ModelForm은 Form과는 달리 save 멤버함수를 지원해줍니다.
ModelForm 클래스 내부에 instance 멤버변수를 가지고 있습니다.
https://github.com/django/django/blob/3.0.14/django/forms/models.py#L289
유효성 검사에 통과한 값들(form.cleaned_data)을 관련 모델로의 save(create or update)를 지원해주는 것이죠.
save 메서드에서는 commit=True 키워드 인자를 지원하고, commit=True일때 instance.save()를 호출한 후에 instance를 반환하고, commit=False에서는 instance.save()를 호출하지 않고 instance를 반환합니다. 꼭 아래 코드를 확인해보세요.
https://github.com/django/django/blob/3.0.14/django/forms/models.py#L459
아래의 코드에서 .post, .author 지정은 form 인스턴스에 대한 설정이 아니라 instance 멤버변수에 대한 설정입니다.
comment = form.save(commit = False)
comment.post = post
comment.author = request.user
comment.save()
그러니 아래의 코드에서 .post, .author 속성 설정이 오류가 발생하지 않더라도, 이는 instance에 .post, .author 설정을 한 것이 아닙니다. // 파이썬은 동적으로 객체에 임의의 속성을 저장할 수 있는 유연함이 있습니다. 언어적 특징이죠.
form = CommentForm(request.POST,request.FILES)
form.post = post
form.author = request.user
form.save()
---
그리고 FBV/CBV 모두 활발히 사용이 되구요. FBV로만 서비스를 개발하셔도 됩니다.
다른 장고 라이브러리를 활용할 때에는 CBV로 된 뷰들이 있으니 이를 활용하실려면 CBV에 대한 이해가 있으셔야겠죠.
CBV는 생각하신 대로 상속을 통한 재사용성을 극대화 및, 원하는 메서드만 상속을 통해 변경할 수 있다는 유연함이 있습니다.
화이팅입니다. :-)
안녕하세요.
0
87
1
[OneToOne Field Demo] get_user_model() 메서드를 활용해야 하는 이유?
0
318
1
useEffect 훅에서 else 유무에 따른 결과
0
246
1
useAxios 훅의 dependency array 설정
0
273
1
useEffect에서 변수 업데이트 관련 질문
0
418
1
rest_framework.generics.CreateAPIView의 model 속성 유무
0
297
1
bootstrap4
0
515
4
리뉴얼 강의가 오픈이 되면 기존 강의는 더이상 못보는걸까요
1
396
1
admin form에서 앞선 필드 선택 후 다른 필드 select widget 구성하는 방법
0
618
3
useState는 필수일까요?
0
288
1
python manage.py makemigrations instagram 시 created_at default 오류가 발생합니다.
0
645
4
Django allauth를 사용한 소셜 로그인 시 에러
0
692
1
프로젝트명 변경 뒤, 디버그툴바+디버그모드 사용 시 에러
0
605
2
useLocalStorage() 함수 사용여부
0
267
1
django에 LOGIN_URL = '/accounts/login/'의 의미?
0
471
1
리듀서의 의미 재확인
0
465
1
simple-jwt Refresh Token 사용 노하우
0
949
2
docker compose 를 통한 배포 관련 오류 문의
0
722
1
파이썬 속도 장고 관련 궁금한게 있습니다.
0
402
1
is_like_user
0
251
1
related_name 오류
0
297
1
re_path 오류
0
281
1
re_path url
0
268
1
No post matches the given query
0
694
2





