Удаление объектов после ввода

Я создаю простое веб-приложение, в котором - я пытаюсь реализовать функцию, которая -

Если word, введенное пользователем в Another models's objects, слово будет удалено, я имею в виду, что я хранил few names на модели типа: автомобиль, велосипед, дождь, и календарь. И я сделал другую модель с именем BlogPost, так что когда пользователь отправляет форму и если указанное имя в another model's objects, то имя будет удалено. но имя не удаляется.

models.py

class BlogPost(models.Model):
    title = models.CharField(max_length=30,default='')
    name = models.CharField(max_length=30,default='')

class All_Name(models.Model):
    names = models.CharField(max_length=30,default='')

Пользователь вводит свое имя, а я сохраняю существующие имена в модели All_Name, и если введенное имя находится в модели All_Name, то имя будет удалено.

views.py

def new_blog_post(request):
    allNames= All_Name.objects.all().values_list('names', flat=True)

    if request.method == 'POST':
        form = PostForm(data=request.POST)
        if form.is_valid():

            formName = form.cleaned_data['name']
            new_post = form.save(commit=False)
            if formName in allNames:
                new_post.save()
       # Deleting Here
                allNames = formName
                allNames.delete()
                
            else:
                return redirect('home')

    else:
        form = PostForm()

    context = {'form':form}
    return render(request, 'new_blog_post.html', context)

Что я пробовал? :-

  • Я также пробовал :-
formName.delete()

Но он ничего не сохраняет и не удаляет Имя.

  • Потом я попробовал
allNames.delete()

Но он показывает

Невозможно вызвать delete() после .values() или .values_list()

Я пробовал много раз, но мне ничего не помогло.

Спасибо.

Примечание :-

Я не говорю о значениях unique, я хотел сказать, что я буду вручную хранить names в модели All_Names, и я попрошу пользователя ввести имя, и если он найдет какое-либо имя, то это имя будет удалено из модели All_Names

.

Ваша логика удаления неверна. Вот что вам следует сделать.

allNames = All_Names.objects.get(names = formName) #Fetch the actual record from the ORM and then call delete
allNames.delete()

Причина, по которой он показал ошибку, когда вы вызвали .delete(), заключается в том, что value_list() сворачивает ORM возможности Django и возвращает вам родной формат списка python. .delete() - это ORM-возможность Django.

Вернуться на верх