Добрый день!
Прошу вас помочь!
после переопределения метода POST возникает ошибка указанная на скриншоте.
Если я убираю метод __init__ в forms.py то все сохраняет
В чем ошибка? Что нужно дописать в данной ситуации?
forms.py
class Konkurs_resultForm(ModelForm):
class Meta:
model = Konkurs_result
fields = '__all__'
def __init__(self, *args, **kwargs): # если убираю этот метод то сохраняется
konkurs = kwargs.pop('konkurs')
profile = kwargs.pop('profile')
konkurs_tour = kwargs.pop('konkurs_tour')
konkurs_k = kwargs.pop('konkurs_k')
konkurs_j = kwargs.pop('konkurs_j')
super(Konkurs_resultForm, self).__init__(*args, **kwargs)
tmp_konkursants = Konkurs_result.objects.filter(konkurs=konkurs,konkurs_tour=konkurs_tour,profile=profile).values_list('konkurs_k', flat=True)
self.fields['konkurs_k'].queryset = Konkurs_k.objects.filter(konkurs_id=konkurs_k).exclude(out_game=True).exclude(id__in=tmp_konkursants) # exclude это условие NOT out_game=True
self.fields['konkurs_j'].queryset = Konkurs_j.objects.filter(konkurs_id=konkurs_j)
views.py
class konkurs_resultNew_record(LoginRequiredMixin,generic.CreateView):
form_class = Konkurs_resultForm
template_name = 'main/new_konkurs_result.html'
context_object_name = 'konks_result'
error=''
def get_form_kwargs(self): # вызов параметров формы Konkurs_resultForm и передача значений
try:
kwargs = super(konkurs_resultNew_record, self).get_form_kwargs()
profile = Profile.objects.get(user=self.request.user).id
profile2 = Konkurs_j.objects.get(profile=profile,konkurs=self.kwargs['pk2']).profile
kwargs['konkurs'] = self.kwargs['pk2']
kwargs['profile'] = profile2
kwargs['konkurs_tour'] = self.kwargs['pk']
kwargs['konkurs_k'] = self.kwargs['pk2']
kwargs['konkurs_j'] = self.kwargs['pk2']
except:
kwargs = super(konkurs_resultNew_record, self).get_form_kwargs()
profile = Profile.objects.get(user=self.request.user).id
profile2 = 0
kwargs['konkurs'] = self.kwargs['pk2']
kwargs['profile'] = profile2
kwargs['konkurs_tour'] = self.kwargs['pk']
kwargs['konkurs_k'] = self.kwargs['pk2']
kwargs['konkurs_j'] = self.kwargs['pk2']
return kwargs
def post(self, request, *args, **kwargs):
konkursk_id = request.POST.get('konkurs_k')
outgame_id = request.POST.get('out_game')
tmp_konkursk = Konkurs_k.objects.get(id=konkursk_id)
tmp_konkursk.out_game = outgame_id
self.form_class(request.POST).save()
tmp_konkursk.save()
return HttpResponseRedirect('/')