我在尝试使用优惠和优惠券时遇到了Django-Oscar的问题。当我删除凭证时,相关实体ConditionalOffer不会被删除并保留在数据库中。
因此,当我尝试使用与我刚刚删除的代码相同的代码添加另一张凭单时,会收到漂亮的IntegrityError duplicate key value violates unique constraint "offer_conditionaloffer_name_key"
我在PostgreSQL(11)和psycopg2(2.8.3)上使用django-oscar(2.0.1)。
这里有一个错误screenshot和一个ConditionalOffer table错误,其中还有条目(10off和20off)。
这是正常行为还是错误?如果正常,我该如何使用与已删除的旧代码相同的代码创建凭证?
答案 0 :(得分:0)
这是正常的(如果有些不受欢迎的话)行为-Oscar不会清理使用凭证创建的报价。原因是,就模型而言,要约可以与任意数量的凭单相关联-因此它不假定删除凭单时不再需要要约。
可能存在这样一种论点,即如果通过仪表板为凭证创建了一个要约,并且该要约具有相同的名称,那么当该凭证是时应将其删除-但这当前尚未实现。
现在,您需要从Django管理员或外壳程序中删除孤立的商品。