일부 옵션으로 선택 필드를 만들려면 choiceField
이 있습니다. 이런 식으로 뭔가 :Django의 동적 선택 필드 사용
forms.py
class NewForm(forms.Form):
title = forms.CharField(max_length=69)
parent = forms.ChoiceField(choices = CHOICE)
하지만 (ChoiceField
에 필요한) 미리 정의 된 튜플을하지 않고 옵션을 만들 수 있어야합니다. 기본적으로, 각 사용자에 따라 몇 가지 옵션 태그를 채우기 위해 request.user에 대한 액세스 권한이 필요하지만 form.Form 클래스에서 요청을 사용할 수있는 방법이 있는지 여부는 알 수 없습니다.
대안을 통해 NewForm
의 인스턴스를 미리 채울하는 것입니다 :
views.py
form = NewForm(initial={'choices': my_actual_choices})
하지만 난 NEWFORM과 my_actual_choices 어쨌든 작동하지 않는 것 만들 더미의 선택을 추가해야합니다.
이 문제를 해결하는 세 번째 방법은 ChoiceField의 하위 클래스를 만들고 save()
을 재정의하는 것이라고 생각하지만이 작업을 수행하는 방법을 잘 모르겠습니다.
예, 작동합니다. 감사합니다 –
'super()'가 먼저 와야합니다. – Surya
생성자 앞에서'super()'를 보았을 때 혼란 스러웠습니다.하지만 시도해 보았을 때 'self'라는 이름이 정의되지 않았습니다. 'super()'가 생성자에 있어야합니다. 편집 기록을 살펴보면 수어 (Surya)가 의미하는 바는'super()'가 원래 생성자의 마지막 줄 이었기 때문이라고 생각합니다. – user2233706