Значение исключения: (не удается разрешить ключевое слово) В Django - PullRequest
1 голос
/ 29 января 2020

Я собираюсь сделать простой интернет-магазин и в настоящее время работаю над кнопкой добавления в корзину.

Когда я нажимаю кнопку «Добавить в корзину» прямо сейчас, она возвращает ошибку следующим образом:

FieldError at /add-to-cart/box-1/

Exception Value:    
Cannot resolve keyword 'ordered' into field. Choices are: box, box_id, id, order, quantity, title

Код, связанный с *

views.py:

def add_to_cart(request, slug):
    # Get the item from the slug via get_object_or_404 method
    box = get_object_or_404(Box, slug=slug)
    # Check if the user have an order
    order_box = OrderBox.objects.create(box=box)
    order_qs = OrderBox.objects.filter(user=request.user, ordered=False)

    if order_qs.exists():
        order = order_qs[0]
        # Check if order item is in the order
        if order.box.filter(box__slug=box.slug).exists():
            order_box.quantity += 1
            order_box.save()
    else:
        ordered_date = timezone.now()
        order = Order.objects.create(user=request.user, ordered_date=ordered_date)
        order.items.add(order_box)

    return redirect('webshop:shop-box', slug=slug)

models.py

class Order(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    items = models.ManyToManyField(OrderBox)
    start_date = models.DateTimeField(auto_now_add=True)
    ordered_date = models.DateTimeField()
    ordered = models.BooleanField(default=False)

    def __str__(self):
        return self.user.username

Я искал вокруг и могу найти разные вопросы по этой теме c, однако я не могу не понимаю, в чем проблема. Я очень признателен за помощь, чтобы выяснить, где я ошибся, спасибо!

1 Ответ

0 голосов
/ 29 января 2020

Похоже, что OrderBox не имеет поля с именем ordered (или user в этом отношении), ваша модель Order имеет. Поэтому, не зная слишком много о вашем проекте, вам нужно либо создать набор запросов для вашей модели Order вместо OrderBox, либо отфильтровать ваш набор запросов OrderBox по их связанным Order моделям (если они связаны, это выглядит так из доступных полей, перечисленных в сообщении об ошибке). Если это так, вы можете попробовать OrderBox.objects.filter(order__user=request.user, order__ordered=False)

...