Xác thực tùy chỉnh hiện sẽ được thực hiện bởi triển khai clean()
phương pháp trên một mô hình
.
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()
Chỉnh sửa: Điều đó nói rằng, bạn phải cẩn thận khi sử dụng clean()
vì nó được gọi từ validate()
trước khi xác thực mô hình dựa trên các quy tắc được đặt trong định nghĩa mô hình của bạn.