我想在Form类中传递self.request
个数据.我可以在视图中访问它,但不能在Form类中访问它.
class AttendanceCreateView(LoginRequiredMixin, CreateView):
model = Attendance
template_name = 'attendance/attendances_new.html'
form_class = AttendanceForm
def get_initial(self):
initial = super().get_initial()
initial['class_name'] = self.request.GET.get('class', '')
return initial
我的表单类:
class AttendanceForm(forms.ModelForm):
class_name = forms.ChoiceField(choices=CLASS_NAMES, disabled=True)
teacher = forms.ModelMultipleChoiceField(
queryset=Teacher.objects.all().order_by('id'))
subject_name = forms.ChoiceField(choices=[])
total_students = forms.IntegerField(initial=0)
unique_code = forms.IntegerField(initial=0)
class Meta:
model = Attendance
fields = ['class_name', 'teacher', 'subject_name',
'total_students', 'unique_code']
def __init__(self, *args, **kwargs):
super(AttendanceForm, self).__init__(*args, **kwargs)
# This I need to be done
# if self.request.GET.get('class', '') = 'class1':
# self.fields['subject_name'].choices = MY_CHOICES_1
# elif self.request.GET.get('class', '') = 'class2':
# self.fields['subject_name'].choices = MY_CHOICES_2
我想根据传递的请求值设置subject_name
个选项.对于第一类,我想要不同的主题 Select .对于第二类,我想要不同的主题 Select 等等.因此,获取请求数据是很重要的.
有没有办法在直接视图中设置初始选项,就像我在class_name
中所做的那样?或者对如何在形式上做到这一点有什么建议?