Удаление объектов после ввода
Я создаю простое веб-приложение, в котором - я пытаюсь реализовать функцию, которая -
Если 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.