Django-oscar:删除凭证不会删除关联的 "ConditionalOffer"

Django-oscar : deleting a voucher don't delete the associated "ConditionalOffer"

我在尝试使用优惠和代金券时遇到 Django-Oscar 的问题。当我删除凭证时,相关实体 ConditionalOffer 不会被删除并保留在数据库中。

因此,当我尝试添加另一张代码与我刚刚删除的代码相同的凭证时,我得到了一个漂亮的 IntegrityError duplicate key value violates unique constraint "offer_conditionaloffer_name_key"

我将 django-oscar (2.0.1) 与 PostgreSQL (11) 和 psycopg2 (2.8.3) 一起使用。

这里有一个 screenshot of the error and another of the ConditionalOffer table 条目(10off 和 20off)保留在那里。

这是正常行为还是错误?如果正常,我该如何创建与已删除的旧优惠券具有相同代码的优惠券?

这是正常的(如果有些不受欢迎的话)行为 - Oscar 不会清理使用代金券创建的优惠。这样做的原因是,就模型而言,优惠可以与任意数量的优惠券相关联 - 因此它不假设优惠券被删除时不再需要优惠。

可能有一种说法认为,如果通过仪表板为代金券创建优惠并共享相同的名称,则应在代金券创建时将其删除 - 但这目前尚未实施。

现在您需要从 Django 管理员或 shell.

中删除孤立的报价