#21872 closed Bug (fixed)
With custom User, test database is not created due to missing auth.Group relation
Reported by: | Max Arnold | Owned by: | |
---|---|---|---|
Component: | Migrations | Version: | 1.7-alpha-1 |
Severity: | Release blocker | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
As described here: https://github.com/django/django/commit/941d23e54890bcc9e73734c5c1f3c82193fd97d6
I have custom User model and it worked fine at least on 1.5. On 1.7a1 my application works too, but I can't run any tests - database is not created due to missing auth.Group relation ("ValueError: Related model 'auth.Group' cannot be resolved").
Below are traceback
Traceback (most recent call last): File "src/manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/core/management/__init__.py", line 427, in execute_from_command_line utility.execute() File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/core/management/__init__.py", line 419, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/core/management/commands/test.py", line 50, in run_from_argv super(Command, self).run_from_argv(argv) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/core/management/base.py", line 288, in run_from_argv self.execute(*args, **options.__dict__) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/core/management/commands/test.py", line 71, in execute super(Command, self).execute(*args, **options) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/core/management/base.py", line 337, in execute output = self.handle(*args, **options) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/core/management/commands/test.py", line 88, in handle failures = test_runner.run_tests(test_labels) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/test/runner.py", line 147, in run_tests old_config = self.setup_databases() File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/test/runner.py", line 109, in setup_databases return setup_databases(self.verbosity, self.interactive, **kwargs) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/test/runner.py", line 299, in setup_databases verbosity, autoclobber=not interactive) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/db/backends/creation.py", line 367, in create_test_db test_database=True) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/core/management/__init__.py", line 167, in call_command return klass.execute(*args, **defaults) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/core/management/base.py", line 337, in execute output = self.handle(*args, **options) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 145, in handle executor.migrate(targets, plan, fake=options.get("fake", False)) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/db/migrations/executor.py", line 60, in migrate self.apply_migration(migration, fake=fake) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/db/migrations/executor.py", line 94, in apply_migration migration.apply(project_state, schema_editor) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/db/migrations/migration.py", line 97, in apply operation.database_forwards(self.app_label, schema_editor, project_state, new_state) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/db/migrations/operations/models.py", line 28, in database_forwards schema_editor.create_model(model) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/db/backends/schema.py", line 256, in create_model self.create_model(field.rel.through) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/db/backends/schema.py", line 182, in create_model definition, extra_params = self.column_sql(model, field) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/db/backends/schema.py", line 109, in column_sql db_params = field.db_parameters(connection=self.connection) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/db/models/fields/related.py", line 1707, in db_parameters return {"type": self.db_type(connection), "check": []} File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/db/models/fields/related.py", line 1698, in db_type rel_field = self.related_field File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/db/models/fields/related.py", line 1605, in related_field return self.foreign_related_fields[0] File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/db/models/fields/related.py", line 1367, in foreign_related_fields return tuple(rhs_field for lhs_field, rhs_field in self.related_fields) File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/db/models/fields/related.py", line 1354, in related_fields self._related_fields = self.resolve_related_fields() File "/Users/user/.virtualenvs/prj/lib/python2.7/site-packages/django/db/models/fields/related.py", line 1339, in resolve_related_fields raise ValueError('Related model %r cannot be resolved' % self.rel.to) ValueError: Related model 'auth.Group' cannot be resolved
and debug context
1339 if isinstance(self.rel.to, six.string_types): -> 1340 raise ValueError('Related model %r cannot be resolved' % self.rel.to) 1341 related_fields = [] ipdb> self.rel.to 'auth.Group' ipdb> six.string_types (<type 'basestring'>,) ipdb> self.model <class '__fake__.User_groups'>
Test machine: OS X Mavericks, Python 2.7.6. Django 1.7-alpha-1 (also reproducible on master revision 29ddae7436e8). Sample code attached.
Attachments (1)
Change History (6)
by , 11 years ago
Attachment: | example.tar.bz2 added |
---|
comment:1 by , 11 years ago
Severity: | Normal → Release blocker |
---|---|
Triage Stage: | Unreviewed → Accepted |
Hi,
I can reproduce this issue with this simple model:
from django.db import models from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin class User(AbstractBaseUser, PermissionsMixin): USERNAME_FIELD = 'id'
With this model (and changing the settings to point AUTH_USER_MODEL
to it), doing the initial makemigrations
works but migrate
fails with the error. However, migrate
will work if the migrations can be faked (for example if the table has been created using a different version of Django).
The error can always be triggered by doing ./manage.py test <appname>
(where <appname>
is the name of the app containing the custom user model).
I'm marking this as a release blocker as well since things work on Django 1.6.
Thanks.
comment:2 by , 11 years ago
Owner: | set to |
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:3 by , 11 years ago
Resolution: | fixed |
---|---|
Status: | closed → new |
With this fix I'm still getting the same error using example project.
comment:4 by , 11 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
The error is in the generated migration - you'll need to delete that and re-create it to fix.
Minimal project to reproduce the problem (run ./manage.py test myauth)