【问题标题】:Django-Oscar override non-abstract model: ShippingEventQuantityDjango-Oscar 覆盖非抽象模型: ShippingEventQuantity
【发布时间】:2019-08-06 06:29:34
【问题描述】:

我想在 django-oscar 的订单应用的 ShippingEventQuantity 模型中添加一个字段。但是这个模型不是抽象的,因此我正在努力寻找一种方法来覆盖它。

我尝试了以下尝试覆盖此模型。使用此代码,当我运行 makemigrations 命令时出现错误:

class SShippingEventQuantity(ShippingEventQuantity):
    replacement = models.CharField(null=True, blank=True, max_length=255)

    class Meta:
        app_label = 'order'
        verbose_name = _("Shipping Event Quantity")
        verbose_name_plural = _("Shipping Event Quantities")
        unique_together = ('event', 'line', 'replacement')

Errors:
order.SShippingEventQuantity: (models.E016) 'unique_together' refers to field 'event' which is not local to model 'SShippingEventQuantity'.
HINT: This issue may be caused by multi-table inheritance.
order.SShippingEventQuantity: (models.E016) 'unique_together' refers to field 'line' which is not local to model 'SShippingEventQuantity'.
HINT: This issue may be caused by multi-table inheritance.

我做错了什么?我能做些什么来解决这个问题?

【问题讨论】:

    标签: django-models django-oscar


    【解决方案1】:

    很遗憾,你不能。虽然 Oscar 试图变得灵活,但并非所有事情都过得去。

    正如您所说,order.abstract_models.ShippingEventQuantity 不是抽象模型,因此 Oscar 不支持通过通常的方式覆盖它,这可能是因为它被用作直通模型。

    我建议你问一个关于如何最好地实现最终目标的新问题,通常有多种方法可以改变 Oscar 的行为。

    【讨论】:

    • 谢谢。我会想办法实现我的要求。
    猜你喜欢
    • 1970-01-01
    • 2012-11-06
    • 2013-05-22
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    • 1970-01-01
    相关资源
    最近更新 更多