【问题标题】:Deferred foreign key 'OrderPayment.order' has not been mapped未映射延迟外键“OrderPayment.order”
【发布时间】:2017-03-14 09:53:20
【问题描述】:

我正在尝试将 django-shop 与简单的 django 安装集成,但它给出了以下错误:

django.core.exceptions.ImproperlyConfigured: Deferred foreign key 'OrderPayment.order' has not been mapped


我什至尝试创建如下文档中提到的 OrderPayment 模型,但仍然没有运气。

class OrderPayment(models.Model):
id = models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')
order = models.ForeignKey(on_delete=models.deletion.CASCADE, to=Order, verbose_name='Order')

class Meta():
    verbose_name = "Order Payment"

【问题讨论】:

    标签: python django django-shop


    【解决方案1】:

    您要么必须先实现具体化模型,要么在商店实现中导入默认模型。见此链接:http://django-shop.readthedocs.io/en/latest/reference/deferred-models.html

    编辑: 默认模型位于 shop/models/defaults 目录中。您可以将它们导入到您的商店实现中,也可以复制它们并修改它们以满足您的项目需求。

    shop/models/defaults/__init__.py 说:

    添加目录 default 中的模型纯粹是为了方便 并用于演示目的。每当需要使用 修改版本,将这些模型之一复制到项目模型中 目录并根据您的需要采用它。否则只需导入模型 进入你自己的 models.py 文件而不使用它。后者很重要 实现模型。

    每个模型都在其自己的文件中声明。这是为了防止模型 如果文件包含此,则相关字段上的验证错误 定义是在不使用模型的情况下导入的。

    【讨论】:

    • 如果你能给出一些代码来演示正确的用法和错误的用法会很有帮助,即使它都在链接中。链接可能很脆弱。
    • 我已经编辑了我的答案。不需要代码示例。但是您对链接到期的看法是正确的。
    猜你喜欢
    • 2014-05-17
    • 1970-01-01
    • 2021-07-01
    • 2011-08-08
    • 1970-01-01
    • 2019-09-13
    • 2012-11-23
    • 2012-04-29
    相关资源
    最近更新 更多