Django Binding POST-запрос к представлению на основе классов

Я пытаюсь создать представление на основе классов для обработки формы обзора / обновления. Форма построена со следующим кодом для формы:

    class ProcesoCandidato(forms.Form):
    ''''''
    hrfrmreclutado_nombres = forms.CharField()
    hrfrmreclutado_se_presento = forms.ChoiceField(
        choices=())
    hrfrmreclutado_cambio_de_cita = forms.DateField()
    hrfrmreclutado_entrevista = forms.ChoiceField()
    hrfrmreclutado_contratado = forms.ChoiceField()
    hrfrmreclutado_motivo_de_rechazo = forms.ChoiceField()
    hrfrmreclutado_notas = forms.CharField()

    def clean(self):
        ''''''
        cleaned_data = super(ProcesoCandidato, self).clean()
        clnfrmreclutado_nombres = \
        clnfrmreclutado_se_presento = \
            self.cleaned_data.get('hrfrmreclutado_se_presento', '')
        clnfrmreclutado_cambio_de_cita = \
            self.cleaned_data.get('hrfrmreclutado_cambio_de_cita', '')
        clnfrmreclutado_entrevista = \
            self.cleaned_data.get('hrfrmreclutado_entrevista', '')
        clnfrmreclutado_contratado = \
            self.cleaned_data.get('hrfrmreclutado_contratado', '')
        clnfrmreclutado_motivo_de_rechazo = \
            self.cleaned_data.get('hrfrmreclutado_motivo_de_rechazo', '')
        clnfrmreclutado_notas = \
            self.cleaned_data.get('hrfrmreclutado_notas', '')

    def __init__(self, *args, **kwargs):
        ''''''
        super(ProcesoCandidato, self).__init__()

        self.fields['hrfrmreclutado_se_presento'].choices = [
            ('', '------'),
            ('Si', 'Si'),
            ('No', 'No'),
            ]
        self.fields['hrfrmreclutado_entrevista'].choices = [
            ('', '------'),
            ('Si', 'Si'),
            ('No', 'No'),
            ]
        self.fields['hrfrmreclutado_contratado'].choices = [
            ('', '------'),
            ('Si', 'Si'),
            ('No', 'No'),
            ]
        self.fields['hrfrmreclutado_motivo_de_rechazo'].choices = \
            [('', '------')] + [(c.pk, c.razonrechazo)
                for c in models.RazonRechazo.objects.all()]

Файл представлений содержит представление на основе классов для обработки методов GET и POST:

class ProcesoRH(View):
''''''
form_class = ProcesoCandidato
initial = {
    'procesorh_llego': 'No',
    'procesorh_entrevista': 'No',
    'procesorh_contratado': 'No',
    'procesorh_rechazo': '',
    'procesorh_notas': ''}
template_name = 'sitio_rh/rhprocess.html'

def get(self, request, *args, **kwargs):
    reclutadoid = request.GET['candidato']
    procesodata = models.ProcesoRH.objects.filter(
        procesorh_reclutado_id=reclutadoid)

    if procesodata.exists() is False:
        objproceso = models.ProcesoRH()
        objproceso.procesorh_reclutado_id = reclutadoid
        objproceso.save()
    else:
        pass

    reclutadodata = models.Reclutado.objects.get(pk=reclutadoid)
    form = self.form_class(initial=self.initial)
    edad = self.cualedad(request, reclutadoid)

    return render(request, self.template_name, {
    'form': form,
    'username': self.request.user,
    'titulo': 'Proceso de Entrevista - RH',
    'marca': 'Plataforma electronica de Reclutamiento',
    'section': 'Proceso RH',
    'candidatoinfo': reclutadodata,
    'rhdata': procesodata,
    'reclutadoedad': edad
    })

def post(self, request, *args, **krargs):
    form = self.form_class(request.POST)
    if form.is_valid():
        sucess = form.is_valid()
        return HttpResponse(sucess)
    else:
       error = ('Bound: %s Valid: %s') % (form.is_bound, form.is_valid())
       return HttpResponse(error)

def cualedad(self, request, reclutadoid):
    '''Calcular la edad a partir de la fecha de nacimiento'''
    reclutadodata = models.Reclutado.objects.get(pk=reclutadoid)
    reclutadonacimiento = reclutadodata.rec_fecha_nacimiento
    fechaactual = datetime.date.today()
    deltaedad = (fechaactual - reclutadonacimiento)
    edad = int(deltaedad.days) / 365
    return edad.__int__()

def __init__(self, *args, **kwargs):
    ''' Instanciamiento, obtenemos los valores iniciales.'''
    super(ProcesoRH, self).__init__()

Представление отлично работает для метода GET, который идентифицирует запись, извлекает данные, которые уже существуют, и помещает их в качестве исходных данных для формы. Сама форма после визуализации имеет кнопку "обновить", которая запускает действие POST. Когда я добираюсь до метода POST, я могу узнать, что форма не связана и недействительна. Я понимаю, что мне нужно связать форму с данными, которые были обновлены / добавлены, прежде чем пытаться использовать метод is_valid, но я не смог этого сделать. Любое руководство с благодарностью.

0 ответов

Другие вопросы по тегам