【发布时间】:2018-02-20 13:24:12
【问题描述】:
我将 oscarcommerce 用于我的 django 项目。我想扩展“StockRecord”模型以包含更多字段。所以我分叉了合作伙伴应用程序,如下所示。 (boscar 是我的应用名称)
python manage.py oscar_fork_app partner boscar/
它已成功分叉并将新文件添加到 boscar/partner 文件夹。我在已安装的应用中添加了“boscar.partner”。
现在我在 StockRecord 模型中添加了新字段,如下所示
boscar/partner/models.py
from django.db import models
from oscar.apps.partner.abstract_models import AbstractStockRecord
class StockRecord(AbstractStockRecord):
effective_price = models.FloatField(default=0, null=True)
is_instock_item = models.BooleanField(default=False, null=True)
instock_quantity = models.IntegerField()
from oscar.apps.partner.models import * # noqa
现在,当我尝试进行迁移时,它会显示以下错误。
RuntimeError: Conflicting 'stockrecord' models in application 'partner': <class 'oscar.apps.partner.models.StockRecord'> and <class 'boscar.partner.models.StockRecord'>.
我已经成功地分叉了目录和订单模型,并且工作正常。只有这个“StockRecord”模型显示此错误。
【问题讨论】:
-
您说“在我安装的应用程序中添加了 'boscar.partner'”,您是否使用 get_core_apps 来做到这一点?喜欢:INSTALLED_APPS = [#Other apps] + get_core_apps(['boscar.partner'])
-
'corsheaders', 'adminapi', 'schedule' ] + get_core_apps(['boscar.partner','boscar.catalogue','boscar.wishlists',]
-
接下来我要检查的是您没有在代码中的某处直接导入该模型,您应该直接导入
boscar.partner.models.StockRecord或使用oscar.core.loading.get_model('partner', 'StockRecord') -
请向我们展示您的完整
INSTALLED_APPS设置。 -
@CraigLoftus,你拯救了我的一天。非常感谢你。在我的一个序列化程序中,我导入为
code from oscar.apps.partner.models import StockRecord code。现在我已将其更改为code from boscar.partner.models import StockRecord code。现在它起作用了。再次感谢。你能不能先解释一下这个问题。
标签: python django django-models django-oscar