From 73ad9599115f7789f59950e473ca1248414284c5 Mon Sep 17 00:00:00 2001 From: Deepak Dinesh Date: Fri, 8 Apr 2022 15:21:04 +0530 Subject: [PATCH 1/2] model validation benchmark added --- .../benchmarks/model_validate/__init__.py | 0 .../benchmarks/model_validate/benchmark.py | 20 +++++++++++++++++++ .../benchmarks/model_validate/models.py | 14 +++++++++++++ .../benchmarks/model_validate/settings.py | 3 +++ 4 files changed, 37 insertions(+) create mode 100644 djangobench/benchmarks/model_validate/__init__.py create mode 100644 djangobench/benchmarks/model_validate/benchmark.py create mode 100644 djangobench/benchmarks/model_validate/models.py create mode 100644 djangobench/benchmarks/model_validate/settings.py diff --git a/djangobench/benchmarks/model_validate/__init__.py b/djangobench/benchmarks/model_validate/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/djangobench/benchmarks/model_validate/benchmark.py b/djangobench/benchmarks/model_validate/benchmark.py new file mode 100644 index 0000000..ab2c768 --- /dev/null +++ b/djangobench/benchmarks/model_validate/benchmark.py @@ -0,0 +1,20 @@ + +from djangobench.utils import run_benchmark + + +def setup(): + global Book + from model_validate.models import Book + +def benchmark(): + global Book + b = Book.objects.create(title="hi") + b.full_clean() + +run_benchmark( + benchmark=benchmark, + meta={ + 'description' : 'Model validation benchmark' + }, + setup=setup +) \ No newline at end of file diff --git a/djangobench/benchmarks/model_validate/models.py b/djangobench/benchmarks/model_validate/models.py new file mode 100644 index 0000000..f1cb109 --- /dev/null +++ b/djangobench/benchmarks/model_validate/models.py @@ -0,0 +1,14 @@ +from django.core.exceptions import ValidationError +from django.utils.translation import gettext_lazy as _ + +from django.db import models + +def validate_title(title): + if title != 'hi': + raise ValidationError( + _('%(title)s is not hi'), + params={'title': title}, + ) + +class Book(models.Model): + title = models.CharField(max_length=100, validators=[validate_title]) \ No newline at end of file diff --git a/djangobench/benchmarks/model_validate/settings.py b/djangobench/benchmarks/model_validate/settings.py new file mode 100644 index 0000000..2074728 --- /dev/null +++ b/djangobench/benchmarks/model_validate/settings.py @@ -0,0 +1,3 @@ +from djangobench.base_settings import * # NOQA + +INSTALLED_APPS = ['model_validate'] \ No newline at end of file From 2064ae7b42aedd3ab97ac8d6d615f15a2239bbf5 Mon Sep 17 00:00:00 2001 From: Deepak Dinesh Date: Wed, 20 Apr 2022 11:14:52 +0530 Subject: [PATCH 2/2] validate model before saving --- djangobench/benchmarks/model_validate/benchmark.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/djangobench/benchmarks/model_validate/benchmark.py b/djangobench/benchmarks/model_validate/benchmark.py index ab2c768..157c70c 100644 --- a/djangobench/benchmarks/model_validate/benchmark.py +++ b/djangobench/benchmarks/model_validate/benchmark.py @@ -8,7 +8,7 @@ def setup(): def benchmark(): global Book - b = Book.objects.create(title="hi") + b = Book(title="hi") b.full_clean() run_benchmark(