clean方法不会返回模型

时间:2016-04-01 17:07:50

标签: python django

  1. 当我遇到与清洁方法相关的问题时,当我使用代码行self.cleaned_data['field']时,只显示一个字段 - >目的和过程模型有更多的字段,我需要验证有关过程模型的所有字段。这是我在表单中的代码。

  2. 我希望只在clean中进行验证并跳过models.py中的验证。

  3. 感谢。

    class ActivityForm(forms.ModelForm):
        role = forms.CharField()
    
        def __init__(self, *args, **kwargs):
            super(ActivityForm, self).__init__(*args, **kwargs)
            self.fields['role'].label = "Rol"
    
        def clean(self):
            name = self.cleaned_data['purpose']
            purpose = self.cleaned_data['purpose']
            role = self.cleaned_data['role']
            order_in_structure = self.cleaned_data['order_in_structure']
            if name == '':
                raise ValidationError("Se debe diligenciar el nombre de la nueva actividad.") 
    
            if purpose == '':
                raise ValidationError("Se debe diligenciar la descripción de la nueva actividad.") 
    
            if role == '':
                raise ValidationError("Se debe dilligenciar el rol responsable de la nueva actividad.") 
    

1 个答案:

答案 0 :(得分:0)

试试这个并告诉我是否有效:

class ActivityForm(forms.ModelForm):
    role = forms.CharField()

    def __init__(self, *args, **kwargs):
        super(ActivityForm, self).__init__(*args, **kwargs)
        self.fields['role'].label = "Rol"

    def clean(self):
        cleaned_data=super(ActivityForm, self).clean()
        name = cleaned_data['purpose']
        purpose = cleaned_data['purpose']
        role = cleaned_data['role']
        order_in_structure = cleaned_data['order_in_structure']
        if not name:
            raise ValidationError("Se debe diligenciar el nombre de la nueva actividad.") 

        if not purpose:
            raise ValidationError("Se debe diligenciar la descripción de la nueva actividad.") 

        if not role:
            raise ValidationError("Se debe dilligenciar el rol responsable de la nueva actividad.")

请注意,如果字符串为空not the_string将返回True