Как решить проблему с условием If never be true в Django

Это функция просмотра, написанная на 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>,
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Этот:

Post_Sub_Category.objects.filter(category_name__category_name__iexact=query_cc)

вернет объект QuerySet. query_sc - это, очевидно, строка. Если вы ищете строку в QuerySet, вы ее не найдете. Однако ваш фильтр уже проверяет для того, что вы хотите, а именно, соответствует ли имя категории одного из объектов Post_Sub_Categoryquery_cc в точности. Итак, перепишите вашу строку как:

if Post_Sub_Category.objects.filter(category_name__category_name__iexact=query_cc):

Это работает, потому что пустой QuerySet будет оцениваться как False (точнее, «ложное значение»).

Для справки в будущем, заголовок вашего сообщения неправильный - if на самом деле оценивается как False. В общем, предположите, что ваш код неправильный, а не сам язык программирования. Вы могли бы проверить это с помощью другого разумно размещенного оператора печати логического значения самого условного оператора.

Другие вопросы по теме