diff options
author | Mark Evans <mark@hellobaton.com> | 2022-09-03 09:53:58 -0400 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-09-05 20:23:32 +0200 |
commit | 19e0587ee596debf77540d6a08ccb6507e60b6a7 (patch) | |
tree | d896dcf55e3e84901dbba69c80189be7129eaef6 /tests/serializers | |
parent | 604fadde11966c5fdfe5a236a7a3963ee868f764 (diff) | |
download | django-19e0587ee596debf77540d6a08ccb6507e60b6a7.tar.gz |
Fixed #33937 -- Optimized serialization of related m2m fields without natural keys.
Diffstat (limited to 'tests/serializers')
-rw-r--r-- | tests/serializers/tests.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/serializers/tests.py b/tests/serializers/tests.py index 48899cb3fb..3cc937d58d 100644 --- a/tests/serializers/tests.py +++ b/tests/serializers/tests.py @@ -410,6 +410,33 @@ class SerializersTestBase: self.assertEqual(self._get_field_values(child_data, "parent_m2m"), []) self.assertEqual(self._get_field_values(child_data, "parent_data"), []) + def test_serialize_only_pk(self): + with self.assertNumQueries(5) as ctx: + serializers.serialize( + self.serializer_name, + Article.objects.all(), + use_natural_foreign_keys=False, + ) + + categories_sql = ctx[1]["sql"] + self.assertNotIn(connection.ops.quote_name("meta_data_id"), categories_sql) + meta_data_sql = ctx[2]["sql"] + self.assertNotIn(connection.ops.quote_name("kind"), meta_data_sql) + + def test_serialize_no_only_pk_with_natural_keys(self): + with self.assertNumQueries(5) as ctx: + serializers.serialize( + self.serializer_name, + Article.objects.all(), + use_natural_foreign_keys=True, + ) + + categories_sql = ctx[1]["sql"] + self.assertNotIn(connection.ops.quote_name("meta_data_id"), categories_sql) + # CategoryMetaData has natural_key(). + meta_data_sql = ctx[2]["sql"] + self.assertIn(connection.ops.quote_name("kind"), meta_data_sql) + class SerializerAPITests(SimpleTestCase): def test_stream_class(self): |