【问题标题】:django-oscar RuntimeError: conflicting modelsdjango-oscar RuntimeError:冲突的模型
【发布时间】:2016-09-19 13:40:04
【问题描述】:

版本信息:Python 2.7、Django 1.9、Oscar Commerce - VERSION = (1.3)

我正在尝试按照文档在目录应用中自定义产品和其他几个模型。

我已经按照文档 documentation 分叉了目录应用程序(到 myproject/forked_apps/catalogue),并在 models.py 中执行了此操作:

from django.db import models
from oscar.apps.catalogue.abstract_models import AbstractProduct

class Product(AbstractProduct):
    is_active = models.BooleanField(default=False)

from oscar.apps.catalogue.models import *

我已经在 settings.py 的 INSTALLED_APPS 中包含了修改后的目录应用程序,作为 get_core_apps 函数的参数,如文档中所述(因此我的本地应用程序正在替换 Oscar 的原始应用程序)。

INSTALLED_APPS = [
   ...
] + get_core_apps(['forked_apps.catalogue'])

迁移也从 oscar.apps.catalogue 复制到我的本地应用程序。 当我尝试进行迁移时,我一直收到此错误:

RuntimeError: Conflicting 'product_product_options' models in application 'catalogue': <class 'oscar.apps.catalogue.models.Product_product_options'> and <class 'forked_apps.catalogue.models.Product_product_options'>.

我试图从我的本地目录应用程序(我之前从 Oscar 应用程序复制的)中删除所有迁移,然后它可以工作,但是所有新的迁移都是在 Oscar 源代码文件夹中创建的,但我需要它们在我的项目中。 ..

我该如何克服这个错误?

【问题讨论】:

    标签: django django-oscar


    【解决方案1】:

    确保在使用 Product 模型的任何地方都使用以下内容:

    from oscar.core.loading import get_model
    
    Product = get_model('catalogue', 'Product')
    

    如果您在代码的某个地方像这样编写导入:

    from oscar.apps.catalogue.models import Product
    

    你会遇到这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      • 2014-12-22
      • 2021-12-25
      • 2010-11-05
      • 2018-01-15
      • 1970-01-01
      • 2016-09-13
      相关资源
      最近更新 更多