12
votes

Ne nécessite conditionnellement qu'un seul champ du formulaire de modèle Django

Quoi qu'il en soit pour créer un champ conditionnellement requis sur la base de la renonibilité ou non d'un autre champ de même forme? XXX PRE>


If field1 has no data and field2 has no data
    form is invalid


0 commentaires

3 Réponses :


11
votes

Méthode de remplacement .Clean (auto), vérifiez pour Self.Cleaned_Data et soulevez validationError

https://docs.djangoproject.com/fr/dev/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-acher-Auch


1 commentaires

Remarque: Si cela correspond à cela pour un plug-in Django CMS, assurez-vous de remplacer la méthode Netty (Self) dans la définition Modèles.py pour le plugin, plutôt que dans Forms.py.



12
votes

Vous pouvez également faire cela à l'aide du modèle si vous connaissez la validation s'appliquera à tous les objets de cette classe. Pour utiliser ci-dessous au niveau du formulaire, utilisez nettoyé_data. Voici un exemple d'exemple de Django Documentation à l'aide de validationError code>: xxx pré>

référence: instance de modèle propre , Validateurs Django P>

Voici un exemple de formulaires: P>

class SimpleForm(forms.ModelForm):

    def clean(self):
        cleaned_data = super(SimpleForm, self).clean()  # Get the cleaned data from default clean, returns cleaned_data
        field1 = cleaned_data.get("field1")
        field2 = cleaned_data.get("field2"),

        if not field1 and not field2:
            raise forms.ValidationError('Please fill in both fields.')

        return cleaned_data


0 commentaires

0
votes

La meilleure solution pour le champ obligatoire conditionnellement consiste à remplacer la méthode de nettoyage de la forme et à afficher l'erreur à condition. Par exemple: xxx


0 commentaires