Django: Невозможно получить номер телефона из последнего заказа пользователя в Chatbot View

Проблема:

Я создаю чатбота, используя Django, и у меня возникли проблемы с получением номера телефона из моей модели CartOrder. У меня есть представление log_customer_query, которое должно возвращать номер телефона из последнего заказа пользователя, но оно не работает.

Код:

Вот мое log_customer_query мнение:

def log_customer_query(request):  
   user = request.user  
   query_text = request.POST.get('query_text', '')  
  
   if not user.is_authenticated:  
      return JsonResponse({'error': 'User must be authenticated to log a query.'}, status=401)  
  
   try:  
      # Fetch the latest order for the user  
      latest_order = CartOrder.objects.filter(user=user).latest('order_date')  
  
      # Create a new customer query  
      new_customer = customer.objects.create(  
        user=user,  
        title=query_text[:100],  # Limit to 100 characters  
        pid=latest_order.pid,  
        oid=latest_order.oid,  
        full_name=latest_order.full_name,  
        email=latest_order.email,  
        mobile=latest_order.mobile,  
        address=latest_order.address,  
        landmark=latest_order.landmark,  
        city=latest_order.city,  
        state=latest_order.state,  
        postalCode=latest_order.postalCode,  
        images=latest_order.images,  
        price=latest_order.price,  
        old_price=latest_order.old_price,  
        qty=latest_order.qty,  
        color=latest_order.color,  
        size=latest_order.size,  
        order_date=latest_order.order_date,  
        return_expire_date=latest_order.return_expire_date,  
        product_status=latest_order.product_status,  
      )  
      return JsonResponse({'success': 'Query logged successfully.'})  
   except CartOrder.DoesNotExist:  
      # If the user doesn't have any orders, create a new customer query without order details  
      new_customer = customer.objects.create(  
        user=user,  
        title=query_text[:100],  # Limit to 100 characters  
      )  
      return JsonResponse({'success': 'Query logged successfully.'})

А вот моя CartOrder модель:

class CartOrder(models.Model):
    user = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
    sku = ShortUUIDField(length=10, max_length=100, prefix="sku", alphabet="1234567890")
    pid = ShortUUIDField(null=True, blank=True, default=None)
    oid = ShortUUIDField(length=10, max_length=100, prefix="oid", alphabet="1234567890")
    full_name = models.CharField(max_length=100, null=True, blank=True)
    email = models.CharField(max_length=100, null=True, blank=True)
    mobile = models.CharField(max_length=100, null=True, blank=True)
    address = models.CharField(max_length=100, null=True, blank=True)
    landmark = models.CharField(max_length=100, null=True, blank=True)
    city = models.CharField(max_length=100, null=True, blank=True)
    coupons = models.ManyToManyField("core.Coupon", blank=True)
    state = models.CharField(max_length=100, null=True, blank=True)
    postalCode = models.CharField(max_length=100, null=True, blank=True)
    title = models.CharField(max_length=100)
    images = models.ImageField(upload_to="order-image", default="product.jpg")
    price = models.DecimalField(max_digits=10, decimal_places=2, default="0.00")
    old_price = models.DecimalField(max_digits=10, decimal_places=2, default="0.00")
    qty = models.BigIntegerField(default=0)
    color = models.CharField(max_length=500, null=True, blank=True, default=None)
    size = models.CharField(max_length=500, null=True, blank=True, default=None)
    saved = models.DecimalField(max_digits=10, decimal_places=2, default="0.00")
    shipping_method = models.CharField(max_length=100, null=True, blank=True)
    tracking_id = models.CharField(max_length=100, null=True, blank=True)
    tracking_website = models.CharField(max_length=100, null=True, blank=True)
    paid_status = models.BooleanField(default=False)
    stripe_payment_intent = models.CharField(max_length=1000, null=True, blank=True)
    order_date = models.DateTimeField(auto_now_add=True)
    return_expire_date = models.DateField(blank=True, null=True)
    product_status = models.CharField(choices=STATUS_CHOICE, max_length=30, default="processing")
    return_product = models.BooleanField(default=False)

    class Meta:
        verbose_name_plural = "Cart Order"

Я использую следующий код JavaScript для вызова представления log_customer_query:

Ошибка:

Проблема в том, что представление log_customer_query не возвращает номер телефона из модели CartOrder. Я пробовал распечатать объект latest_order и поле mobile, но они оба пусты.

Ожидаемое поведение:

Я ожидаю, что представление log_customer_query будет возвращать номер телефона последнего заказа пользователя.

Шаги для воспроизведения:

  1. Создайте новый объект CartOrder с действительным номером телефона.
  2. Вызовите представление log_customer_query, используя код JavaScript, приведенный выше.
  3. Проверьте ответ представления, чтобы убедиться, что оно вернуло номер телефона.
Вернуться на верх