I have the following code in my Django app
def get_filename(root):
def wrapper(instance, filename):
return (root + filename)
return wrapper
...
docfile = models.FileField(upload_to=get_filename("/some_dir"))
Running this with python3 manage.py makemigrations myapp
results in the following error
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.4/dist-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.4/dist-packages/django/core/management/__init__.py", line 345, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.4/dist-packages/django/core/management/base.py", line 348, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/lib/python3.4/dist-packages/django/core/management/base.py", line 399, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python3.4/dist-packages/django/core/management/commands/makemigrations.py", line 150, in handle
self.write_migration_files(changes)
File "/usr/local/lib/python3.4/dist-packages/django/core/management/commands/makemigrations.py", line 178, in write_migration_files
migration_string = writer.as_string()
File "/usr/local/lib/python3.4/dist-packages/django/db/migrations/writer.py", line 167, in as_string
operation_string, operation_imports = OperationWriter(operation).serialize()
File "/usr/local/lib/python3.4/dist-packages/django/db/migrations/writer.py", line 124, in serialize
_write(arg_name, arg_value)
File "/usr/local/lib/python3.4/dist-packages/django/db/migrations/writer.py", line 76, in _write
arg_string, arg_imports = MigrationWriter.serialize(item)
File "/usr/local/lib/python3.4/dist-packages/django/db/migrations/writer.py", line 357, in serialize
item_string, item_imports = cls.serialize(item)
File "/usr/local/lib/python3.4/dist-packages/django/db/migrations/writer.py", line 433, in serialize
return cls.serialize_deconstructed(path, args, kwargs)
File "/usr/local/lib/python3.4/dist-packages/django/db/migrations/writer.py", line 318, in serialize_deconstructed
arg_string, arg_imports = cls.serialize(arg)
File "/usr/local/lib/python3.4/dist-packages/django/db/migrations/writer.py", line 507, in serialize
% (value.__name__, module_name, get_docs_version()))
ValueError: Could not find function wrapper in myapp.models.
Please note that due to Python 2 limitations, you cannot serialize unbound method functions (e.g. a method declared and used in the same class body). Please move the function into the main module body to use migrations.
For more information, see https://docs.djangoproject.com/en/1.9/topics/migrations/#serializing-values
I'm running Python 3.4.3, is Django using my Python 2 installation?