Django 1.8单元测试OperationalError:无此类列

时间:2019-07-16 18:25:32

标签: python django django-south django-1.8

我正在尝试将django1.6项目升级到1.8。这次升级似乎使南方不再使用。我正在尝试更新我的迁移。我按照指南进行操作,使操作看起来很简单。我删除了所有旧的迁移文件,然后运行makemigrations来生成新的文件。如果我运行migrate,所有迁移都将正确运行。

运行单元测试设置时,出现错误消息:

self = <django.db.backends.sqlite3.base.SQLiteCursorWrapper object at 0x111eb4168>
query = 'SELECT "common_basecacheconfig"."id", "common_baseconfig"."contact", "common_baseconfig"."slack_room", "com...config_ptr_id" = "common_baseconfig"."id" ) ORDER BY "app_appconfig"."uniqueentryconfig_ptr_id" ASC'
params = ()

def execute(self, query, params=None):
  if params is None:
     return Database.Cursor.execute(self, query)
  query = self.convert_query(query)
> return Database.Cursor.execute(self, query, params)
E django.db.utils.OperationalError: no such column: app_appconfig.name

Django-1.8.3-py2.py3-none-any.whl/django/db/backends/sqlite3/base.py:318: OperationalError

我编辑了一些消息以取出公司特定的内容。但这是相同的信息。

这些是我相信的相关模型

name_model = models.CharField(max_length=64, blank=False, db_index=True,
    validators=[validate_name])
stage_model = models.CharField(max_length=10, choices=STAGE_CHOICES, default=(TEST, TEST))


class UniqueEntryConfig(BaseCacheConfig):
  name = name_model
  stage = stage_model


  class Meta:
    unique_together = ('name', 'stage')


class AppConfig(UniqueEntryConfig):

  _SERVER_PATH_TEMPLATE = '/service/%s/%s/%s_api'

  def trimmed_name(self):
    return self.name.replace('app_', '', 1)

  def cm_prefix(self):
    return self.name

  def delete(self):
    for config in self.capacity_configs.all():
      config.delete()
    super(AppConfig, self).delete()

  def server_path(self):
    return self._SERVER_PATH_TEMPLATE % (
        RoleDecider.api(self.stage), self.stage, self.name)

  self_served = models.BooleanField(default=True)
  jira_link = models.URLField(blank=True)

如果我为abstract = True添加Class MetaUniqueEntryConfig,则可以使它运行,但是我认为生成的迁移不适用于现有数据库。如果我运行makemigrations,则添加abstract = True会导致测试失败,并出现有关字段冲突的错误。

0 个答案:

没有答案