Ошибка базы данных Без сообщения об исключении, предоставленного в Django с MongoDB — Django

#python #django #mongodb #django-models #pymongo

Вопрос:

Я работаю над проектом Django, где я использовал postgres, и он работал нормально. Теперь я хочу использовать MongoDB, но чаще всего при запросе объектов я получаю ошибку «Сообщение об исключении не предоставлено». пожалуйста, найдите приведенные ниже коды для справки и помощи.

Модель

 class Order(models.Model):
    order_status = (('Pending', 'Pending'), ('Under Process', 'Under Process'), ('Dispatched', 
    'Dispatched'),
                    ('Delivered', 'Delivered'), ('Cancelled', 'Cancelled'), ('Out for 
    delivery', 
   'Out for delivery'))
    patient = models.ForeignKey(Patient, on_delete=models.SET_NULL, null=True, blank=True)
    shipping_address = models.ForeignKey(ShippingAddress, on_delete=models.DO_NOTHING, 
    null=True, 
    blank=True)
    order_created = models.DateTimeField(auto_now_add=True,null=True)
    date_ordered = models.DateTimeField(null=True)
    complete = models.BooleanField(default=False)
    transaction_id = models.CharField(max_length=100, null=True)
    order_number = models.CharField(max_length=20, unique=True, null=True)
    status = models.CharField(choices=order_status, default='Pending', max_length=30)
    payment_status = models.CharField(choices=(('Received', 'Received'), ('Failed', 'Failed'), 
    ('Pending', 'Pending')),
                                      default='Pending', max_length=30)
    ip_address = models.CharField(max_length=30, null=True)
    coupon_applied = models.BooleanField(null=True,blank=True)
    coupon = 
    models.ForeignKey(ShoppingCoupon,on_delete=models.DO_NOTHING,null=True,blank=True)
    coupon_discount = models.DecimalField(max_digits=7,decimal_places=2, 
    null=True,blank=True,default=0)
    # Payment details captured from payment gateway
    payment_order_id = models.CharField(max_length=100, null=True) # razorpay order id
    payment_id = models.CharField(max_length=100, null=True) # Razorpay payment id
    payment_signature = models.CharField(max_length=100, null=True)
    payment_method = models.CharField(max_length=100, null=True)
    ordered_medicine = models.JSONField(null=True,blank=True)
 

Запрос

 def cartData(request):
if request.user.is_authenticated and request.user.user_type == 'patient':
    patient = Patient.objects.select_related('user').get(user=request.user)
    order, created = Order.objects.get_or_create(patient=patient, complete=False) // Im 
    getting error here
    items = order.cartitem_set.select_related('medicine').all()
    cartItems = order.get_cart_items
 

я получаю сообщение об ошибке «заказ, создан = Заказ.объекты.get_or_create(пациент=пациент, завершено=Ложь)»

Комментарии:

1. Вы также можете использовать try except блок для достижения этой цели : try: order = Order.objects.get(patient=patient, complete=False) except: Order.DoesNotExist as e: print(e.message) order = Order(patient=patient, complete=False) order.save()

2. Спасибо за ваш ответ. но это не работает

3. Каков тип ошибки. ValueError ? TypeError ? попробуйте поймать его в блоке «кроме» тоже

Ответ №1:

У меня такая же проблема got_or_create , метод не работает с django/mongo. особенно BooleanField . Если я удалю BooleanField его, он будет хорошо работать.