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
- если строка имеет вид
Case-insensitive
fruit = "apple"
posts = Feature.objects.filter(name__icontains = "apple")
if posts.exists():
print("yes")
else:
print("No")
- для
Case-insensitive exact match
fruit = "apple"
posts = Feature.objects.filter(name__iexact= "apple")
if posts.exists():
print("yes")
else:
print("No")