【问题标题】:Django-oscar : deleting a voucher don't delete the associated "ConditionalOffer"Django-oscar:删除凭证不要删除关联的“ConditionalOffer”
【发布时间】:2019-08-24 07:04:31
【问题描述】:

我遇到了 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 的错误和另一个 ConditionalOffer table 条目(10off 和 20off)保留在那里。

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

【问题讨论】:

    标签: python django django-oscar


    【解决方案1】:

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

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

    现在您需要从 Django 管理员或 shell 中删除孤立的商品。

    【讨论】:

    • 当您说“优惠可以与任意数量的优惠券相关联”时,您是指通过 VoucherSets 吗?还有一个名为voucher_voucher_offers 的表,其中包含优惠券和优惠之间的链接,因此通常应删除此表中没有条目的优惠(为优惠券创建)。有道理吗?
    • 不,我的意思是one voucher can have multiple offers assigned to it。优惠券集是一个单独的东西,与您遇到的问题无关。说应该删除附在优惠券上的优惠是有道理的——我只是说奥斯卡目前没有这样做。
    猜你喜欢
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多