Question

Comment puis-je rendre les champs obligatoires non obligatoires lorsqu'un autre champ [associé] a une certaine valeur?

Supposons que j'ai les modèles suivants:

class foo(models.Model):
    bar = models.CharField(max_length=200)
    foo_date = models.DateTimeField()

Quand je sauve, et que bar contient une certaine valeur, je voudrais que foo_date devienne non obligatoire. Comment puis-je accomplir cela? Merci.

Était-ce utile?

La solution

T.Stone a raison. Voici comment procéder avec un formulaire type:

class foo(models.Model):
    bar = models.CharField(max_length=200)
    foo_date = models.DateTimeField()

class ClientAdmin( MyModelAdmin ):
    form = FooModelForm

class FooModelForm( forms.ModelForm ):

    def clean(self):
        cleaned_data = self.cleaned_data
        if cleaned_data.get("bar") == 'some_val' and not cleaned_data.get('foo_date'):
            msg = 'Field Foo Date is mandatory when bar is some_val'
            self._errors[field] = ErrorList([msg])
            del cleaned_data[field]
        return cleaned_data

http://docs.djangoproject.com/en/dev/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other

Autres conseils

Je pense qu'il suffirait de définir foo_barr sur blank = True, puis d'implémenter votre propre formulaire et la validation personnalisée à utiliser par le modèle Admin. Voir cette partie de la documentation - Ajout d'une validation personnalisée à l'administrateur

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top