代理模型无抽象模型基类

2024-04-26 07:46:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从Django==1.7.8升级到Django==1.8.2并且遇到了这个问题,它甚至阻止我创建新的迁移来抑制它。在

我有一个看起来像这样的装置

从一个单独的包裹里我有以下

class Category(MyModel, Mixin):

    name = models.CharField(max_length=255)
    slug = models.SlugField(unique=True)

在我的django应用程序中,我有以下内容

^{pr2}$

当我升级到Django==1.8.2时,我收到以下错误

 Traceback (most recent call last):
   File "manage.py", line 10, in <module>
     execute_from_command_line(sys.argv)
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
     utility.execute()
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 330, in execute
     self.fetch_command(subcommand).run_from_argv(self.argv)
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 30, in run_from_argv
     super(Command, self).run_from_argv(argv)
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/core/management/base.py", line 390, in run_from_argv
     self.execute(*args, **cmd_options)
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 74, in execute
     super(Command, self).execute(*args, **options)
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/core/management/base.py", line 441, in execute
     output = self.handle(*args, **options)
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 90, in handle
     failures = test_runner.run_tests(test_labels)
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/test/runner.py", line 210, in run_tests
     old_config = self.setup_databases()
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/test/runner.py", line 166, in setup_databases
     **kwargs
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/test/runner.py", line 370, in setup_databases
     serialize=connection.settings_dict.get("TEST", {}).get("SERIALIZE", True),
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/db/backends/base/creation.py", line 368, in create_test_db
     test_flush=not keepdb,
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 120, in call_command
     return command.execute(*args, **defaults)
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/core/management/base.py", line 441, in execute
     output = self.handle(*args, **options)
   File "/var/venvs/myproject/local/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 "/var/venvs/myproject/local/lib/python2.7/site-packages/django/db/migrations/executor.py", line 104, in migrate
     state = migration.mutate_state(state, preserve=do_run)
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/db/migrations/migration.py", line 83, in mutate_state
     operation.state_forwards(self.app_label, new_state)
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/db/migrations/operations/models.py", line 53, in state_forwards
     list(self.managers),
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/db/migrations/state.py", line 81, in add_model
     self.reload_model(app_label, model_name)
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/db/migrations/state.py", line 152, in reload_model
     self.apps.render_multiple(states_to_be_rendered)
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/db/migrations/state.py", line 262, in render_multiple
     model.render(self)
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/db/migrations/state.py", line 546, in render
     body,
   File "/var/venvs/myproject/local/lib/python2.7/site-packages/django/db/models/base.py", line 216, in __new__
     raise TypeError("Proxy model '%s' has no non-abstract model base class." % name)
 TypeError: Proxy model 'Section' has no non-abstract model base class.

我有点困惑,因为当我访问代理模型的parents属性时,它有适当的Category模型和Category._meta.abstract返回{}。我进入了发生错误的堆栈,当它使用基类Category将我的Section模型作为代理进行计算时,它通过了,但它继续用ModelBase进行测试,在那里它失败了


Tags: djangoinpyselfexecutevenvsvarlib