From 2e47a15359f1be13c5c302e15f26b140c9fe49d8 Mon Sep 17 00:00:00 2001 From: Ashia Date: Sat, 23 Oct 2021 15:34:52 -0600 Subject: [PATCH] Conditionally support NullBooleanField --- CHANGELOG.md | 1 + model_bakery/generators.py | 11 +++++++++-- tests/generic/models.py | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1dc90cf1..71f4bafb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Changed - Fix a simple typo in `bulk_create` disclaimer in docs +- Conditionally support NullBooleanField, it's under deprecation and will be removed in Django 4.0 [PR #25](https://github.com/model-bakers/model_bakery/pull/250) ### Removed diff --git a/model_bakery/generators.py b/model_bakery/generators.py index 159eb7b0..429e3fd8 100644 --- a/model_bakery/generators.py +++ b/model_bakery/generators.py @@ -20,7 +20,6 @@ IntegerField, IPAddressField, ManyToManyField, - NullBooleanField, OneToOneField, PositiveIntegerField, PositiveSmallIntegerField, @@ -87,6 +86,13 @@ CIEmailField = None CITextField = None +try: + # Deprecated since Django 3.1 + from django.db.models import NullBooleanField +except ImportError: + NullBooleanField = None + + try: # PostgreSQL-specific fields (only available when psycopg2 is installed) from django.contrib.postgres.fields.ranges import ( @@ -124,7 +130,6 @@ def gen_integer(): OneToOneField: random_gen.gen_related, ManyToManyField: random_gen.gen_m2m, BooleanField: random_gen.gen_boolean, - NullBooleanField: random_gen.gen_boolean, IntegerField: _make_integer_gen_by_range(IntegerField), BigIntegerField: _make_integer_gen_by_range(BigIntegerField), SmallIntegerField: _make_integer_gen_by_range(SmallIntegerField), @@ -185,6 +190,8 @@ def gen_integer(): default_mapping[DateRangeField] = random_gen.gen_date_range if DateTimeRangeField: default_mapping[DateTimeRangeField] = random_gen.gen_datetime_range +if NullBooleanField: + default_mapping[NullBooleanField] = random_gen.gen_boolean # Add GIS fields diff --git a/tests/generic/models.py b/tests/generic/models.py index eacbcacb..d299d0a0 100755 --- a/tests/generic/models.py +++ b/tests/generic/models.py @@ -228,7 +228,7 @@ def save(self, *args, **kwargs): class Classroom(models.Model): students = models.ManyToManyField(Person, null=True) - active = models.NullBooleanField() + active = models.BooleanField(null=True) class Store(models.Model):