Hello,

I have created a new model called Settings, which has a OneToOneField(User,
primary_key=True) field. After the automatically created
migrations.CreateModel() invocation I added a RunPython line that runs this
function:

def create_user_settings(apps, schema_editor):
    User = get_user_model()
    Settings = apps.get_model('accounts', 'Settings')

    for user in User.objects.all():
        Settings.objects.get_or_create(user=user) # This is line 13

When running this migration, I get the following error:

Traceback (most recent call last):

  File "manage.py", line 10, in <module>

    execute_from_command_line(sys.argv)

  File
"/home/polesz/Projects/dem/venv/lib/python2.7/site-packages/django/core/management/__init__.py",
line 338, in execute_from_command_line
    utility.execute()
  File
"/home/polesz/Projects/dem/venv/lib/python2.7/site-packages/django/core/management/__init__.py",
line 330, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File
"/home/polesz/Projects/dem/venv/lib/python2.7/site-packages/django/core/management/base.py",
line 390, in run_from_argv
    self.execute(*args, **cmd_options)
  File
"/home/polesz/Projects/dem/venv/lib/python2.7/site-packages/django/core/management/base.py",
line 441, in execute
    output = self.handle(*args, **options)
  File
"/home/polesz/Projects/dem/venv/lib/python2.7/site-packages/django/core/management/commands/migrate.py",
line 221, in handle
    executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial)
  File
"/home/polesz/Projects/dem/venv/lib/python2.7/site-packages/django/db/migrations/executor.py",
line 110, in migrate
    self.apply_migration(states[migration], migration, fake=fake,
fake_initial=fake_initial)
  File
"/home/polesz/Projects/dem/venv/lib/python2.7/site-packages/django/db/migrations/executor.py",
line 147, in apply_migration
    state = migration.apply(state, schema_editor)
  File
"/home/polesz/Projects/dem/venv/lib/python2.7/site-packages/django/db/migrations/migration.py",
line 115, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state,
project_state)
  File
"/home/polesz/Projects/dem/venv/lib/python2.7/site-packages/django/db/migrations/operations/special.py",
line 183, in database_forwards
    self.code(from_state.apps, schema_editor)
  File "/home/polesz/Projects/dem/accounts/migrations/0003_settings.py",
line 13, in create_user_settings
    Settings.objects.get_or_create(user=user)
  File
"/home/polesz/Projects/dem/venv/lib/python2.7/site-packages/django/db/models/manager.py",
line 127, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File
"/home/polesz/Projects/dem/venv/lib/python2.7/site-packages/django/db/models/query.py",
line 405, in get_or_create
    return self.get(**lookup), False
  File
"/home/polesz/Projects/dem/venv/lib/python2.7/site-packages/django/db/models/query.py",
line 325, in get
    clone = self.filter(*args, **kwargs)
  File
"/home/polesz/Projects/dem/venv/lib/python2.7/site-packages/django/db/models/query.py",
line 679, in filter
    return self._filter_or_exclude(False, *args, **kwargs)
  File
"/home/polesz/Projects/dem/venv/lib/python2.7/site-packages/django/db/models/query.py",
line 697, in _filter_or_exclude
    clone.query.add_q(Q(*args, **kwargs))
  File
"/home/polesz/Projects/dem/venv/lib/python2.7/site-packages/django/db/models/sql/query.py",
line 1306, in add_q
    clause, require_inner = self._add_q(where_part, self.used_aliases)
  File
"/home/polesz/Projects/dem/venv/lib/python2.7/site-packages/django/db/models/sql/query.py",
line 1333, in _add_q
    current_negated=current_negated, connector=connector,
allow_joins=allow_joins)
  File
"/home/polesz/Projects/dem/venv/lib/python2.7/site-packages/django/db/models/sql/query.py",
line 1175, in build_filter
    self.check_related_objects(field, value, opts)
  File
"/home/polesz/Projects/dem/venv/lib/python2.7/site-packages/django/db/models/sql/query.py",
line 1070, in check_related_objects
    self.check_query_object_type(value, opts)
  File
"/home/polesz/Projects/dem/venv/lib/python2.7/site-packages/django/db/models/sql/query.py",
line 1054, in check_query_object_type
    (value, opts.object_name))
ValueError: Cannot query "polesz": Must be "User" instance.

While debugging, it turns out that the value of the user variable is indeed
a User instance. Do I miss some key information here? Maybe apps are not
fully initialized when I run migrations?

Best,
Gergely

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CACczBULo9LgrJ-d7AfmGUDN0aV9DRoz4gSRQJGLBQh9-PGmn6A%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to