#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