Changes between Version 1 and Version 2 of Ticket #36235, comment 12
- Timestamp:
- Apr 18, 2026, 7:32:56 AM (4 weeks ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ticket #36235, comment 12
v1 v2 1 1 Hello. 2 The problem can still be reproduced: 3 * Git commit hash: `ed79c5959add54b6e8ea589ec601e0d2e801517e` 4 * test method: the method `test_get_or_create_on_related_queryset`, mentioned above by Nick Pope 5 * test output: 2 The problem can still be reproduced using the test method `get_or_create.tests.GetOrCreateTests.test_get_or_create_on_related_queryset`, mentioned above by Nick Pope. 3 * This test method was added after checking out : 4 * `ed79c5959add54b6e8ea589ec601e0d2e801517e` (branch: `main`) 5 * `fb61c8a6e902abc885048a1a78592a4bd4329f87` (branch: `stable/5.2.x`) 6 * The `IntegrityError` is not thrown (and the test succeeds) based on either of the aforementioned Git commits, if we change the `get_or_create` call to: 7 * `book, created = p.books.all().get_or_create(name="The Book of Ed & Fred", publisher=p)` 8 * This agrees with what Nick Pope suggested that ".get_or_create() and .update_or_create() lose context of the related instance" 9 * the test output for the case of the main branch can be found below: 6 10 7 11 {{{ … … 12 16 File "/home/vasilis/oss_projects/django/django/django/db/models/query.py", line 1029, in get_or_create 13 17 return self.get(**kwargs), False 14 ^^^^^^^^^^^^^^^^^18 ^^^^^^^^^^^^^^^^^^ 15 19 File "/home/vasilis/oss_projects/django/django/django/db/models/query.py", line 681, in get 16 20 raise self.model.DoesNotExist( 17 ^^^^^^^^^^^^^^^^^18 21 get_or_create.models.Book.DoesNotExist: Book matching query does not exist. 19 22 … … 23 26 File "/home/vasilis/oss_projects/django/django/django/db/backends/utils.py", line 105, in _execute 24 27 return self.cursor.execute(sql, params) 25 ^^^^^^^^^^^^^^^^^28 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 26 29 File "/home/vasilis/oss_projects/django/django/django/db/backends/sqlite3/base.py", line 359, in execute 27 30 return super().execute(query, params) 28 ^^^^^^^^^^^^^^^^^31 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 29 32 sqlite3.IntegrityError: NOT NULL constraint failed: get_or_create_book.publisher_id_column 30 33 … … 32 35 33 36 Traceback (most recent call last): 34 File "/usr/lib/python3.12/unittest/case.py", line 58, in testPartExecutor35 yield36 File "/usr/lib/python3.12/unittest/case.py", line 634, in run37 self._callTestMethod(testMethod)38 ^^^^^^^^^^^^^^^^^39 File "/usr/lib/python3.12/unittest/case.py", line 589, in _callTestMethod40 if method() is not None:41 ^^^^^^^^^^^^^^^^^42 37 File "/home/vasilis/oss_projects/django/django/tests/get_or_create/tests.py", line 159, in test_get_or_create_on_related_queryset 43 38 book, created = p.books.all().get_or_create(name="The Book of Ed & Fred") 44 ^^^^^^^^^^^^^^^^^39 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 45 40 File "/home/vasilis/oss_projects/django/django/django/db/models/query.py", line 1036, in get_or_create 46 41 return self.create(**params), True 47 ^^^^^^^^^^^^^^^^^42 ^^^^^^^^^^^^^^^^^^^^^ 48 43 File "/home/vasilis/oss_projects/django/django/django/db/models/query.py", line 711, in create 49 44 obj.save(force_insert=True, using=self.db) 50 ^^^^^^^^^^^^^^^^^51 45 File "/home/vasilis/oss_projects/django/django/django/db/models/base.py", line 896, in save 52 46 self.save_base( 53 47 File "/home/vasilis/oss_projects/django/django/django/db/models/base.py", line 988, in save_base 54 48 updated = self._save_table( 55 ^^^^^^^^^^^^^^^^^49 ^^^^^^^^^^^^^^^^^ 56 50 File "/home/vasilis/oss_projects/django/django/django/db/models/base.py", line 1191, in _save_table 57 51 results = self._do_insert( 58 ^^^^^^^^^^^^^^^^^52 ^^^^^^^^^^^^^^^^ 59 53 File "/home/vasilis/oss_projects/django/django/django/db/models/base.py", line 1243, in _do_insert 60 54 return manager._insert( 61 ^^^^^^^^^^^^^^^^^55 ^^^^^^^^^^^^^^^^ 62 56 File "/home/vasilis/oss_projects/django/django/django/db/models/manager.py", line 87, in manager_method 63 57 return getattr(self.get_queryset(), name)(*args, **kwargs) 64 ^^^^^^^^^^^^^^^^^58 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 65 59 File "/home/vasilis/oss_projects/django/django/django/db/models/query.py", line 2108, in _insert 66 60 return query.get_compiler(using=using).execute_sql(returning_fields) 67 ^^^^^^^^^^^^^^^^^61 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 68 62 File "/home/vasilis/oss_projects/django/django/django/db/models/sql/compiler.py", line 1935, in execute_sql 69 63 cursor.execute(sql, params) 70 ^^^^^^^^^^^^^^^^^71 64 File "/home/vasilis/oss_projects/django/django/django/db/backends/utils.py", line 79, in execute 72 65 return self._execute_with_wrappers( 73 ^^^^^^^^^^^^^^^^^66 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 74 67 File "/home/vasilis/oss_projects/django/django/django/db/backends/utils.py", line 92, in _execute_with_wrappers 75 68 return executor(sql, params, many, context) 76 ^^^^^^^^^^^^^^^^^69 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 77 70 File "/home/vasilis/oss_projects/django/django/django/db/backends/utils.py", line 100, in _execute 78 71 with self.db.wrap_database_errors: 79 ^^^^^^^^^^^^^^^^^72 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 80 73 File "/home/vasilis/oss_projects/django/django/django/db/utils.py", line 94, in __exit__ 81 74 raise dj_exc_value.with_traceback(traceback) from exc_value 82 ^^^^^^^^^^^^^^^^^83 75 File "/home/vasilis/oss_projects/django/django/django/db/backends/utils.py", line 105, in _execute 84 76 return self.cursor.execute(sql, params) 85 ^^^^^^^^^^^^^^^^^77 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 86 78 File "/home/vasilis/oss_projects/django/django/django/db/backends/sqlite3/base.py", line 359, in execute 87 79 return super().execute(query, params) 88 ^^^^^^^^^^^^^^^^^80 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 89 81 django.db.utils.IntegrityError: NOT NULL constraint failed: get_or_create_book.publisher_id_column 90 82