我正在尝试构建一个基于类的视图来处理审核/更新表单。表单使用以下代码构建:
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()]
views文件包含一个基于类的视图来处理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方法之前将表单绑定到更新/添加的数据,但我无法这样做。非常感谢任何指导。