Я занимаюсь разработкой своего приложения с помощью Djna go и для базы данных mon go db. В основном это платформа для подписки. Во 2-й раз при покупке подписки ошибка выдачи.
В модели заказа у меня есть:
class Order(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
ref_code = models.CharField(max_length=20, blank=True, null=True)
subscriptions = models.ManyToManyField(OrderSubscription)
start_date = models.DateTimeField(auto_now_add=True)
ordered_date = models.DateTimeField()
ordered = models.BooleanField(default=False)
amount = models.FloatField()
billing_address = models.ForeignKey(
'Address', related_name='billing_address', on_delete=models.SET_NULL, blank=True, null=True)
payment = models.ForeignKey(
'Payment', on_delete=models.SET_NULL, blank=True, null=True)
coupon = models.ForeignKey(
'Coupon', on_delete=models.SET_NULL, blank=True, null=True)
being_delivered = models.BooleanField(default=False)
received = models.BooleanField(default=False)
refund_requested = models.BooleanField(default=False)
refund_granted = models.BooleanField(default=False)
Когда кто-то принес подписку и хочет снова купить другую подписку Sub, ошибка выдачи дублирующего ключа, где его создание другой таблицы заказов с тем же пользователем.
def finalcheckout(request):
if request.method == "POST":
subscription = get_object_or_404(Subscription, slug = request.POST.get("sub_slug"))
order_subscription, created = OrderSubscription.objects.get_or_create(
subscription=subscription,
user=request.user,
ordered=False
)
order = Order.objects.create(user=request.user)
order.subscriptions.add(order_subscription)
messages.info(request, "This subscription was added to your cart.")
return redirect("core:order-summary")
Ошибка:
Параметры: [2, Нет, datetime.datetime (2020, 3, 2, 12, 26, 53, 481937), Нет, Ложь, Нет, Нет, Нет, Нет, Нет, Ложь, Ложь, Ложь, Ложь] Pymon go error: {'writeErrors': [{'index': 0, 'code': 11000, 'keyPattern': {'backup_id': 1}, 'keyValue': {'backup_id': None}, 'errmsg': 'E11000 коллекция повторяющихся ошибок ключа: hostmanager.subscription_order index: subscription_order_backup_id_79d0cc4e_uniq dup ключ: {backup_id: null}