django-oscar2.1 在 is_public 字段上给出错误。这是一个模型加载问题
django-oscar2.1 giving errors on is_public field. Its a model loading issue
我正在迁移到 django-oscar2.1
我已经分叉目录应用程序,它有一些现有的迁移。新添加的字段 is_public 在迁移 #10 中。我有一个使用 create_from_breadcrumbs 方法的自定义迁移 #5。因此,当我尝试 运行 在新数据库迁移时迁移#5 触发错误 is_public 数据库中不存在字段。
create_from_breadcrumbs
Oscar 加载具有最新状态的模型,该模型在模型中包含 is_public 但在数据库中不包含。
在迁移 #5 中,我正在加载这样的模型
类别 = apps.get_model("目录", "类别")
您不能在这样的迁移中使用 create_from_breadcrumbs
。其原因在 Django 的 documentation on migrations 中有所解释 - 外部代码中使用的模型版本可能与此迁移预期的版本不同 - 这就是它失败的原因。
如果您想在迁移过程中创建模型对象,您需要在迁移中使用模型的历史版本。这意味着定义您自己的 create_from_breadcrumbs
版本,并按照 Django 文档的建议使用模型的历史版本:
def create_from_breadcrumbs_for_migration(apps, schema_editor):
Category = apps.get_model('catalogue', 'Category')
# Perform logic to create categories here.
class Migration(migrations.Migration):
dependencies = [
('catalogue', '0004_xxxx'),
]
operations = [
migrations.RunPython(create_from_breadcrumbs_for_migration),
]
就是说,我认为迁移首先并不适用于此类数据。在我看来,您最好为此编写一个单独的管理命令,在应用迁移后 运行。
我正在迁移到 django-oscar2.1
我已经分叉目录应用程序,它有一些现有的迁移。新添加的字段 is_public 在迁移 #10 中。我有一个使用 create_from_breadcrumbs 方法的自定义迁移 #5。因此,当我尝试 运行 在新数据库迁移时迁移#5 触发错误 is_public 数据库中不存在字段。
create_from_breadcrumbs Oscar 加载具有最新状态的模型,该模型在模型中包含 is_public 但在数据库中不包含。
在迁移 #5 中,我正在加载这样的模型 类别 = apps.get_model("目录", "类别")
您不能在这样的迁移中使用 create_from_breadcrumbs
。其原因在 Django 的 documentation on migrations 中有所解释 - 外部代码中使用的模型版本可能与此迁移预期的版本不同 - 这就是它失败的原因。
如果您想在迁移过程中创建模型对象,您需要在迁移中使用模型的历史版本。这意味着定义您自己的 create_from_breadcrumbs
版本,并按照 Django 文档的建议使用模型的历史版本:
def create_from_breadcrumbs_for_migration(apps, schema_editor):
Category = apps.get_model('catalogue', 'Category')
# Perform logic to create categories here.
class Migration(migrations.Migration):
dependencies = [
('catalogue', '0004_xxxx'),
]
operations = [
migrations.RunPython(create_from_breadcrumbs_for_migration),
]
就是说,我认为迁移首先并不适用于此类数据。在我看来,您最好为此编写一个单独的管理命令,在应用迁移后 运行。