질문이요~
184
작성한 질문수 11
Article 수정하거나 만들때,
project 선택하는 부분에서요
project =
forms.ModelChoiceField(queryset=Project.objects.all(), required=False)
내가 만든 Project만 선택하게 하고싶은데
queryset안에서 filter 처리 하기 위한 데이터를 가져오고싶은데
form안에서는 가져올수 없나요?
예를들어 view에서는 requset.user로 user 정보를 가져올수있는 것처럼요
답변 1
0
안녕하세요 하동원님!
다시 커스터마이징 관련 질문이네요!
물론 질문주신 문제를 해결하는 여러 방법이 있겠지만
제 나름대로 편한 형식으로 답변을 드리겠습니다.
일단 queryset를 수정하는것이 주요한 목표입니다.
현재 설정되어있는 Project.objects.all() 으로는 모든 프로젝트들이 선택지에 노출되기 때문에,
해당 쿼리셋을 수정해주는것이 필수적입니다.
그래서 저는 get_form 메서드를 오버라이딩 해서 해당 내용을 구현해보겠습니다.
class ArticleCreateView(CreateView):
model = Article
form_class = ArticleCreationForm
template_name = 'articleapp/create.html'
...
def get_form(self, form_class=None):
form = super(ArticleCreateView, self).get_form()
form.fields['project'].queryset = Project.objects.filter(creator_id=self.request.user.id)
return form
이런식으로 CreateView 내부의 get_form 을 오버라이딩 해줍니다.
간단하게 설명을 하자면, form 을 가져오는 get_form 메서드가 있는데,
해당 form을 가로채서 form 내부의 project queryset을 수정해준 이후 다시 되돌려주는 방식입니다.
결과적으로 사용자에게는 필터링된 project들만 보여지게 되겠죠?
원래 다른 방법으로 한 내용을 답변 달아드렸는데,
해보니까 필터링은 되는데 제대로 작성이 되지 않더라구요 ㅠ
다른 방법으로 해서 답변 다시 남겨드립니다.
이 답변도 꼭 정답이 아니라, 다른 방법으로도 구현이 가능하다는점 알아주시구요!
아무튼 답변이 도움이 되셨으면 좋겠네요!
부족하다면 계속 질문 남겨주시고 오늘도 좋은하루 보내시길 바래요~
강의에 나왔던 js 파일이 깃허브에 없습니다
1
63
1
모바일 디버깅, 반응형 레이아웃 4분48초 질문
0
43
1
decorator 관련질문입니다.
0
49
1
PasswordChangeView
0
92
2
로그아웃뷰 작동 관련 (2025년 3월)
1
129
1
실행에러질문
0
146
1
@login_required 데코레이터 사용시 리다이렉트는 어디서 참조하여 설정을 하는걸까요?
0
109
1
CacheBackend 관련 에러
0
169
1
21강 CreateView를 통한 회원가입 구현 질문
0
318
1
53강 disallowedhost
0
330
2
502 Bad Gateway
0
467
1
mariadb 접근권한 오류
0
532
2
logout 후 빈 화면으로 이동합니다 ㅠㅠ
0
450
2
로그아웃 후 빈 화면으로 이동
0
324
1
서버 운영 관련 질문 드립니다.(Unable to retirve...)
0
227
1
static/base.css파일을 인식을 못합니다
0
373
1
안녕하세요 19강 디버깅 설정 질문있습니다.
0
287
1
프로필 update편 질문있습니다.
0
371
1
수업질문
0
387
1
COOP error
0
523
1
61강 Dockerfile error
0
589
1
static안에 base.css 에서 정의한 클래스가 적용되지 않습니다.
0
481
1
static 파일 중 jpg 파일만 로드 불가
0
408
1
58강 static 파일 적용 안됨
0
538
1





