版本信息:Python 2.7,Django 1.9,Oscar Commerce - VERSION =(1.3)
我正在尝试按照文档在目录应用中定制产品和其他一些模型。
我根据文档documentation分叉了目录应用程序(到myproject / forked_apps / catalog)并在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函数的参数,如docs中所述(因此我的本地应用程序正在替换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源代码文件夹中创建的,但我需要它们在我的项目中。 ..
如何克服此错误?
答案 0 :(得分:0)
确保在使用Product
模型的任何地方都使用以下内容:
from oscar.core.loading import get_model
Product = get_model('catalogue', 'Product')
如果您在代码的某个位置写一个导入,就像这样:
from oscar.apps.catalogue.models import Product
您会遇到这个问题。