Как проверить, возвращает ли запрос a что-то или нет в django?

#django

#django

Вопрос:

У меня это: items=order.orderitem_set.all() в моем views.py это дает элементы в порядке. В настоящее время это находится в моем представлении корзины. Проблема, с которой я сталкиваюсь, заключается в том, что даже если корзина людей пуста, то есть товаров нет, пользователь все равно может перейти на страницу выставления счетов. Итак, есть ли какой-либо способ в моем views.py чтобы я мог проверить, есть ли элемент в элементах, и вернуть оповещение, если нет.

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

1. вам нужно извлекать элементы, если они есть, или вам нужно только знать количество

2. Я делаю for item in items , чтобы получить, нужно ли мне что-то изменить. но для этого мне нужно только посмотреть, есть ли элемент или нет

3. похоже, вам просто нужно выполнить запрос, поскольку вы все равно будете выполнять его позже

Ответ №1:

вам нужно будет оценить запрос, я считаю, что вам нужно в любом случае извлекать элементы здесь, поэтому лучше всего просто использовать len

 if len(items):
    # has items
else:
    # empty
  

однако, если вам просто нужно количество, вы можете использовать .count , что будет более эффективным запросом, если вам нужно только количество, и вы не будете извлекать сами элементы позже…

 if items.count():
    # has items
else:
    # empty
  

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

1. Было бы лучше, если бы я мог просто использовать if для проверки количества. итак, что было бы противоположно if items.count(), чтобы это могло быть что-то вроде этого: if no items: #empty

2. это не лучше, потому что вы выполняете избыточные запросы, если вам все равно нужно будет извлекать элементы позже, но противоположное if items.count() это if not items.count()

Ответ №2:

Если я понимаю вашу ситуацию, вероятно, вам нужно сделать следующее:

 if items.exists():
    # send the user to billing
else:
    # send some message to the template and show the message to the user