必需的字段验证基于另一个类中的另一个

时间:2018-06-19 15:39:36

标签: django-forms

我有2个类,并且我需要根据第一个类中字段的值来验证第二个类中的字段,因为我的模板有2种形式。见下面。在第二种形式中,我需要知道modelodocumento.id == 1(从第一种形式开始)。在这种情况下,将需要字段nom_documentoservico。

第一种形式:

class servicoForm(forms.ModelForm):

    modelodocumento = forms.ModelChoiceField(widget=forms.RadioSelect(), queryset=modelodocumento.objects.all(), required=True, empty_label=None,
                                         error_messages={'required': 'REQUIRED'} )

    class Meta:
        model = servico
        fields = (
                    'modelodocumento',
                    'desc_detalhamento'
                  )

    def __init__(self, *arg, **kwarg):
        super(servicoForm, self).__init__(*arg, **kwarg)
        self.empty_permitted = False

    def clean_desc_detalhamento(self):
        modelo = self.cleaned_data['modelodocumento']
        detalhe = self.cleaned_data['desc_detalhamento']

        # Seleciona a instância do modelo escolhido
        instance_modelo = modelodocumento.objects.get(desc_modelodocumento=modelo)

        # Se o modelo escolhido for MODELO CARTÓRIO, o usuário deverá entrar com as devidas informações no campo DETALHAMENTO
        if instance_modelo.id==2 and (detalhe==None or detalhe==''):
            raise forms.ValidationError('Incluir as informações necessárias.')

        return detalhe

第二种形式:

class documentomodeloForm(forms.ModelForm):

    class Meta:
        model = documentoservico
        fields = (
            'nom_documentoservico',
        )

    def __init__(self, *arg, **kwarg):
        super(documentomodeloForm, self).__init__(*arg, **kwarg)
        self.empty_permitted = False

    def clean_nom_documentoservico(self):
        documento = self.cleaned_data['nom_documentoservico']

    # if modelodocumento.id == 1 (FROM servicoForm)
    #    raise forms.ValidationError('field is required !')

        return documento

0 个答案:

没有答案