1

Bonjour Je travaille actuellement sur un projet django, dans l'un de mes modèles, j'ai un téléchargement de fichier et de téléchargement d'image, avec les paramètres de ces deux champs sont définis sur blank = True, cependant il y a une stipulatation avec ceci et c'est ce champ peut seulement être vide si l'un des deux n'est pas, ainsi par exemple, si le champ image est complet alors l'utilisateur n'a pas besoin de télécharger un fichier, et si le champ de fichier est complet alors l'utilisateur n'a pas besoin de télécharger une image.Python/Django Modèle écrasant les données nettoyées

Mon problème est que j'ai du mal à comprendre la logique, c'est dans la section admin, donc je comprends que je vais avoir l'écrasement des données propres. Quelqu'un peut-il aider?

+1

terminé ... comment? –

+0

terminé i.e il y a une entrée dans le POST – Udders

Répondre

4

Vous avez juste besoin de définir une méthode clean() personnalisée sur le ModelForm qui vérifie si l'un des champs ou les deux sont remplis.

def clean(self): 
    file_field = self.cleaned_data.get('file_field') 
    image_field = self.cleaned_data.get('image_field') 

    if file_field and image_field: 
     raise forms.ValidationError("You should only provide one of File or Image") 
    elif not file_field and not image_field: 
     raise forms.ValidationError("You must provide either File or Image") 

    return self.cleaned_data 
+0

Merci, même si je pense que j'ai raté, à la fois un fichier et une image peuvent être téléchargés ensemble, je suppose que cela va changer la condition de quoi? – Udders

+0

Bien sûr, alors déposez simplement le premier 'if'. –

Questions connexes