2016-09-02 2 views
3

Итак, я скопировал проект Django на новый сервер, реплицировал среду и импортировал таблицы в локальную базу данных mysql.Django TypeError: allow_migrate() получил неожиданный аргумент ключевого слова 'model_name'

Но когда я пытаюсь запустить makemigrations это дает мне TypeError: allow_migrate() получил неожиданное ключевое слово аргумент «MODEL_NAME»

Это полный трассировки стека:

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
execute_from_command_line(sys.argv) 
File "/home/cicd/.local/lib/python2.7/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line 
utility.execute() 
File "/home/cicd/.local/lib/python2.7/site-packages/django/core/management/__init__.py", line 359, in execute 
self.fetch_command(subcommand).run_from_argv(self.argv) 
File "/home/cicd/.local/lib/python2.7/site-packages/django/core/management/base.py", line 305, in run_from_argv 
self.execute(*args, **cmd_options) 
File "/home/cicd/.local/lib/python2.7/site-packages/django/core/management/base.py", line 353, in execute 
self.check() 
File "/home/cicd/.local/lib/python2.7/site-packages/django/core/management/base.py", line 385, in check 
include_deployment_checks=include_deployment_checks, 
File "/home/cicd/.local/lib/python2.7/site-packages/django/core/management/base.py", line 372, in _run_checks 
return checks.run_checks(**kwargs) 
File "/home/cicd/.local/lib/python2.7/site-packages/django/core/checks/registry.py", line 81, in run_checks 
new_errors = check(app_configs=app_configs) 
File "/home/cicd/.local/lib/python2.7/site-packages/django/core/checks/model_checks.py", line 30, in check_all_models 
errors.extend(model.check(**kwargs)) 
File "/home/cicd/.local/lib/python2.7/site-packages/django/db/models/base.py", line 1266, in check 
errors.extend(cls._check_fields(**kwargs)) 
File "/home/cicd/.local/lib/python2.7/site-packages/django/db/models/base.py", line 1337, in _check_fields 
errors.extend(field.check(**kwargs)) 
File "/home/cicd/.local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 893, in check 
errors = super(AutoField, self).check(**kwargs) 
File "/home/cicd/.local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 208, in check 
errors.extend(self._check_backend_specific_checks(**kwargs)) 
File "/home/cicd/.local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 310, in _check_backend_specific_checks 
if router.allow_migrate(db, app_label, model_name=self.model._meta.model_name): 
File "/home/cicd/.local/lib/python2.7/site-packages/django/db/utils.py", line 300, in allow_migrate 
allow = method(db, app_label, **hints) 
TypeError: allow_migrate() got an unexpected keyword argument 'model_name' 

Я был бы признателен за любые помогите в отладке этой ошибки и попытайтесь понять, что вызывает эту ошибку.

+0

Возможно, это связано с тем: https://docs.djangoproject.com/en/1.9/releases/1.8/#signature-of-the-allow-migrate-router-method. Какую версию Django вы используете на своем новом сервере? – elethan

+0

да, поэтому я переместился с 1.9.4 до 1.10, но должен это вызывать, потому что это изменение функции, которое вы связываете, составляет от 1,8 до 1,9 –

+0

И понижение до 1.9.4 исправило проблему, спасибо elethan. Но мне все еще интересно, почему? –

ответ

5

Я встречаюсь с такой же проблемой, когда я перехожу от 1.6. * В 1.10.Finally я нашел причину проблемы по DATABASE_ROUTERS

старую версию я пишу, как этот

class OnlineRouter(object): 
    # ... 
    def allow_migrate(self, db, model): 
     if db == 'myonline': 
      return model._meta.app_label == 'online' 
     elif model._meta.app_label == 'online': 
      return False 
     return None 

это работает на переписывание, как этот

class OnlineRouter(object): 
    # ... 
    def allow_migrate(self, db, app_label, model_name=None, **hints): 
     if db == 'my_online': 
      return app_label == 'online' 
     elif app_label == 'online': 
      return False 
     return None 
более подробно см

https://docs.djangoproject.com/en/1.10/topics/db/multi-db/#an-example