Это функция просмотра, написанная на Django. Это предложение никогда не выполняется, даже если условие истинно:
def search(request):
query_cc = request.GET.get('h_qcc') # category variable
query_sc = request.GET.get('h_qsc') # sub_category variable
print('###################')
print(query_sc)
dd = Post_Category.objects.filter(category_name__iexact=query_cc).get()
print(';;;;;;;;;;;;;;;;;')
print(dd) # print the category
ddd = Post_Sub_Category.objects.filter(category_name__category_name__iexact=dd)
print('ooooooooooooooooo')
print(ddd) # print the sub_category variable for the category variable that is passed through the request of
if query_sc in Post_Sub_Category.objects.filter(category_name__category_name__iexact=query_cc): # if the sub_category passed in variable query_sc is existing in a list of choices based on category that is passed in query_cc variable. Unfortunately this clause never executed even though it is true
all_p_sub_category = Post_Sub_Category.objects.filter(category_name__category_name__iexact=query_cc)
print('+++++++++++++++++++')
print (all_p_sub_category)
Это пример вывода, что оператор if должен быть выполнен:
###################
car
;;;;;;;;;;;;;;;;;
for sale
ooooooooooooooooo
<QuerySet [<Post_Sub_Category: car>, <Post_Sub_Category: spare parts>, <Post_Sub_Category: truck>,
Этот:
Post_Sub_Category.objects.filter(category_name__category_name__iexact=query_cc)
вернет объект QuerySet
. query_sc
- это, очевидно, строка. Если вы ищете строку в QuerySet
, вы ее не найдете. Однако ваш фильтр уже проверяет для того, что вы хотите, а именно, соответствует ли имя категории одного из объектов Post_Sub_Category
query_cc
в точности. Итак, перепишите вашу строку как:
if Post_Sub_Category.objects.filter(category_name__category_name__iexact=query_cc):
Это работает, потому что пустой QuerySet
будет оцениваться как False
(точнее, «ложное значение»).
Для справки в будущем, заголовок вашего сообщения неправильный - if на самом деле оценивается как False
. В общем, предположите, что ваш код неправильный, а не сам язык программирования. Вы могли бы проверить это с помощью другого разумно размещенного оператора печати логического значения самого условного оператора.