MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Utilisation des méthodes de classe MongoEngine Document pour la validation personnalisée et les crochets de pré-enregistrement

La validation personnalisée doit maintenant être effectuée par implémenter le clean() méthode sur un modèle .

class Essay(Document):
    status = StringField(choices=('Published', 'Draft'), required=True)
    pub_date = DateTimeField()

    def clean(self):
        """
        Ensures that only published essays have a `pub_date` and
        automatically sets the pub_date if published and not set.
        """
        if self.status == 'Draft' and self.pub_date is not None:
            msg = 'Draft entries should not have a publication date.'
            raise ValidationError(msg)

        # Set the pub_date for published items if not set.
        if self.status == 'Published' and self.pub_date is None:
            self.pub_date = datetime.now()

Modifier : Cela dit, vous devez être prudent en utilisant clean() comme il est appelé depuis validate() avant de valider le modèle en fonction des règles définies dans la définition de votre modèle.