У меня есть форма, которую я хотел бы отфильтровать на основе информации, переданной другой формой, но , но пока не проверяю ее :
forms.py:
class SampleRunSearchForm(forms.ModelForm):
class Meta:
model = SampleRun
fields = ('id',)
def __init__(self, sr_obj, *args, **kwargs):
super(SampleRunSearchForm, self).__init__(*args, **kwargs)
self.fields['id'] = forms.ChoiceField(required=True,
label='Sample:',
widget=forms.CheckboxSelectMultiple,
choices=((s.id, s) for s in sr_obj)
)
self.helper = FormHelper()
self.helper.layout = Layout(
Field('id', css_class='sample-run-display',),
Submit('submit', 'Report samples', css_class='upload-btn')
)
self.helper.form_method = 'POST'
views.py:
class SearchSampleRun(View):
samplerunform = SampleRunSearchForm
template_name = 'results/samplerun_search_form.html'
def get(self, request, *args, **kwargs):
self.run_obj = get_object_or_404(Run, id=kwargs['run_id'])
self.choice = kwargs['choice']
self.sample_run_obj = self.obtainCorrectSamples()
samplerunform = self.samplerunform(sr_obj=self.sample_run_obj)
context = {'samplerunform': samplerunform}
return render(request, self.template_name, context)
def post(self, request, *args, **kwargs):
samplerunform = self.samplerunform(request.POST)
if samplerunform.is_valid():
HttpResponseRedirect(...somewhere to display information)
context = {}
return render(request, self.template_name, context)
Первоначальная форма (не показана) принимает поле char и перенаправляет в мое представление SearchSampleRun с помощью ** kwargs.Я хочу отфильтровать свой SampleRunSearchForm на основе этих kwargs и отобразить список флажков - отфильтрованный объект модели из модели SampleRun.Это работает, но когда я нажимаю эти кнопки и отправляю форму, она снова инициализируется, и sr_obj имеет значение None, поэтому поле формы выдает ошибку.
Я попытался использовать:
sr_obj = kwargs.pop('sr_obj', None)
В моем методе init (), но это должен быть способ динамической фильтрации набора запросов формы для отображения подмножества значений перед проверкой с целью проверки при отправке этой формы?