- Notifications
You must be signed in to change notification settings - Fork 349
Open
Description
hi
i wrote a custom migration file to add some data to a porject
it looks like this:
from django.db import migrations def make_teacher_group(apps, schema_editor): Group = apps.get_model("auth", "Group") Permission = apps.get_model("auth", "Permission") group = Group.objects.create(name="teachers") permission = Permission.objects.get(codename="teacher") group.permissions.add(permission) def delete_teacher_group(apps, schema_editor): Group = apps.get_model("auth", "Group") group = Group.objects.get(name="teachers") group.permissions.clear() group.delete() class Migration(migrations.Migration): dependencies = [ ("accounts", "0003_user_purchase_number_teacherdata"), ] operations = [ migrations.RunPython(make_teacher_group, delete_teacher_group), ]
when running pytest, it fails to migrate this with the following error:
============================================================================================================ test session starts ============================================================================================================= platform linux -- Python 3.12.8, pytest-8.3.5, pluggy-1.5.0 django: version: 5.1.7, settings: jozvenama_project.settings (from ini) rootdir: /home/amirreza/projects/jozvenama/backend configfile: pyproject.toml plugins: django-4.10.0, env-1.1.5 collected 14 items tests/test_accounts/test_models.py E =================================================================================================================== ERRORS =================================================================================================================== ________________________________________________________________________________________ ERROR at setup of TestUserModel.test_valid_data_creates_user ________________________________________________________________________________________ request = <SubRequest '_django_db_marker' for <Function test_valid_data_creates_user>> @pytest.fixture(autouse=True) def _django_db_marker(request: pytest.FixtureRequest) -> None: """Implement the django_db marker, internal to pytest-django.""" marker = request.node.get_closest_marker("django_db") if marker: > request.getfixturevalue("_django_db_helper") .venv/lib/python3.12/site-packages/pytest_django/plugin.py:552: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ .venv/lib/python3.12/site-packages/pytest_django/fixtures.py:144: in django_db_setup db_cfg = setup_databases( .venv/lib/python3.12/site-packages/django/test/utils.py:206: in setup_databases connection.creation.create_test_db( .venv/lib/python3.12/site-packages/django/db/backends/base/creation.py:78: in create_test_db call_command( .venv/lib/python3.12/site-packages/django/core/management/__init__.py:194: in call_command return command.execute(*args, **defaults) .venv/lib/python3.12/site-packages/django/core/management/base.py:459: in execute output = self.handle(*args, **options) .venv/lib/python3.12/site-packages/django/core/management/base.py:107: in wrapper res = handle_func(*args, **kwargs) .venv/lib/python3.12/site-packages/django/core/management/commands/migrate.py:357: in handle post_migrate_state = executor.migrate( .venv/lib/python3.12/site-packages/django/db/migrations/executor.py:135: in migrate state = self._migrate_all_forwards( .venv/lib/python3.12/site-packages/django/db/migrations/executor.py:167: in _migrate_all_forwards state = self.apply_migration( .venv/lib/python3.12/site-packages/django/db/migrations/executor.py:255: in apply_migration state = migration.apply(state, schema_editor) .venv/lib/python3.12/site-packages/django/db/migrations/migration.py:132: in apply operation.database_forwards( .venv/lib/python3.12/site-packages/django/db/migrations/operations/special.py:196: in database_forwards self.code(from_state.apps, schema_editor) accounts/migrations/0004_teacher_group_logic.py:10: in make_teacher_group permission = Permission.objects.get(codename="teacher") .venv/lib/python3.12/site-packages/django/db/models/manager.py:87: in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <[RuntimeError('Database access not allowed, use the "django_db" mark, or the "db" or "transactional_db" fixtures to enable it.') raised in repr()] QuerySet object at 0x7669610838f0>, args = (), kwargs = {'codename': 'teacher'} clone = <QuerySet []>, limit = 21, num = 0 def get(self, *args, **kwargs): """ Perform the query and return a single object matching the given keyword arguments. """ if self.query.combinator and (args or kwargs): raise NotSupportedError( "Calling QuerySet.get(...) with filters after %s() is not " "supported." % self.query.combinator ) clone = self._chain() if self.query.combinator else self.filter(*args, **kwargs) if self.query.can_filter() and not self.query.distinct_fields: clone = clone.order_by() limit = None if ( not clone.query.select_for_update or connections[clone.db].features.supports_select_for_update_with_limit ): limit = MAX_GET_RESULTS clone.query.set_limits(high=limit) num = len(clone) if num == 1: return clone._result_cache[0] if not num: > raise self.model.DoesNotExist( "%s matching query does not exist." % self.model._meta.object_name ) E __fake__.Permission.DoesNotExist: Permission matching query does not exist. .venv/lib/python3.12/site-packages/django/db/models/query.py:649: DoesNotExist ========================================================================================================== short test summary info =========================================================================================================== ERROR tests/test_accounts/test_models.py::TestUserModel::test_valid_data_creates_user - __fake__.Permission.DoesNotExist: Permission matching query does not exist.
as you can see, self = <[RuntimeError('Database access not allowed, use the "django_db" mark, or the "db" or "transactional_db" fixtures to enable it.') raised in repr()] QuerySet object at 0x7669610838f0>, args = (), kwargs = {'codename': 'teacher'}
Metadata
Metadata
Assignees
Labels
No labels