У объекта 'list' нет атрибута 'all'
 Я создаю приложение для книжного блога и пытаюсь get cleaned_data in creation form и реализую функцию, в которой "User can add multiple books (like tags) in blogpost which are saved in another model" и If any of book name (Book Tag) mentioned in the form not in the Book List чем он покажет ошибку "You cannot create a new book name"
Так я сделал оператор if else для проверки того, есть ли введенное название книги в существующей книге в Book Model BUT Чем он работал отлично BUT Проблема возникла When someone types 3 book names and one of them book name is in saved book name than , it will not see other book names which are not saved (It is saving the post), So it will not show error
Так что я думаю, что я должен получить доступ ко всем упомянутым названиям книг, указанным в форме, методом .all() (Таким образом, он будет проверять, нет ли какого-либо названия книги в существующих названиях), но эта ошибка продолжает появляться.
у объекта 'list' нет атрибута 'all'
Что я пытаюсь сделать :-
 Я пытаюсь проверить все mentioned names in form если одного из имен нет в сохраненных именах книг, то появляется ошибка.
models.py
class BlogPost(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=30, default='')
    body = models.CharField(max_length=30, default='')
    book_names = models.CharField(max_length=30,default='')
class Book(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    existing_book_names = models.CharField(max_length=30,default='')
views.py
def new_blog_post(request):
    ExistingNames = Book.objects.all().values_list('name', flat=True)
    if request.method == 'POST':
        form = BlogForm(request.POST, request.FILES)
        if form.is_valid():
            names = form.cleaned_data['book_names']
            new_post = form.save(commit=False)
            new_post.post_owner = request.user
            for inputTags in names.all():
                if inputTags in ExistingNames:
                    form.save()
                    return redirect('blogs')
                else:
                    messages.error(
                        request, 'You cannot add new name.')
    else:
        form = BlogForm()
    context = {'form': form}
    return render(request, 'new_blog_post.html', context)
Я пробовал много раз, но ничего не вышло.
Я буду очень признателен за вашу помощь. Спасибо
 Использование all() это не list.all(), это all(list).
Пример:
list = [False, True, False, False, True]
#right
print(all(list))
#wrong
print(list.all())
Более подробную информацию вы можете найти на GeeksforGeeks.
Надеюсь, это помогло.
У вас обычная ошибка: есть цикл для проверки, все ли удовлетворяет какому-то требованию, но вы действуете немедленно, когда встречаете первый элемент, который удовлетворяет требованию.
Со
for inputTag in names: # removed the all(), inputTag is a single one at a time if inputTag in ExistingNames: form.save() return redirect('blogs') else: messages.error( request, 'You cannot add new name.')
должен действовать после цикла, сохраняя успех/неуспех в переменной:
everythingisfine = True              # the new variable
for inputTag in names:               # removed the all()
  if inputTag not in ExistingNames:
    everythingisfine = False
    break                            # if one failed, no need to check the rest
if everythingisfine:                 # checking the new variable, after the loop
  form.save()
  return redirect('blogs')
else:
  messages.error(
    request, 'You cannot add new name.')
 но вы правы в том, что all() это вещь, она может сделать конструкцию намного короче:
everythingisfine = all(inputTag in ExistingNames for inputTag in names)
if everythingisfine:                 # checking the new variable, after the loop
  form.save()
  return redirect('blogs')
else:
  messages.error(
    request, 'You cannot add new name.')