Python возвращает false при проверке существования строки в списке, даже если она существует

Я импортировал модель (с именем Feature) и установил ее в список в Django

posts = Feature.objects.order_by('name') 

при вызове 5-го элемента print(posts[5]) при этом отображается яблоко в оболочке, которое является 5-м объектом однако при проверке с помощью условия if возвращается false

if 'apple' in posts:
    print("yes")
else:
    print("no")

и он выводит нет ... почему это происходит, хотя яблоко существует в списке

'apple' - это строковый объект. posts - это не list, а QuerySet объект объектов Feature. Он никогда не найдет объект другого типа :)

Вы должны искать Feature такие объекты, как, например:

apple = Feature.objects.get(name='apple')
# or if you have more than one
apple = Feature.objects.filter(name='apple').first()

posts = Feature.objects.order_by('name') 

if apple in posts:
    print("yes")
else:
    print("no")

будет напечатано yes.

PS Если имя будет unique, вы можете добавить unique=True к модели.

Думаю, вам нужно просто выполнить queryset

  1. если строка имеет вид Case-insensitive
    fruit = "apple"     
    posts = Feature.objects.filter(name__icontains = "apple")
    if posts.exists():
       print("yes")
    else:
       print("No")
  1. для Case-insensitive exact match
        fruit = "apple"
        posts = Feature.objects.filter(name__iexact= "apple")
        if posts.exists():
           print("yes")
        else:
           print("No")
Вернуться на верх