python - 输入后删除对象
问题描述
我正在构建一个简单的网络应用程序,其中 - 我正在尝试实现一个功能 -
如果word
用户在其中输入了一个单词,Another models's objects
那么这个词将被删除,我的意思是,我已经存储few names
在一个模型上,比如:car、bike、rain和calendar。我制作了另一个名为 的模型BlogPost
,因此当用户提交表单时,如果在其中提到的名称,another model's objects
那么该名称将被删除。但名称没有删除。
模型.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='')
视图.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()
但它显示
在 .values() 或 .values_list() 之后无法调用 delete()
我已经尝试了很多次,但对我没有任何效果。
谢谢你。
解决方案
您的删除逻辑是错误的。这是你应该做的。
allNames = All_Names.objects.get(names = formName) #Fetch the actual record from the ORM and then call delete
allNames.delete()
当您调用它时显示错误的原因.delete()
是因为value_list()
折叠了 Django 的 ORM 功能并为您返回了一个本机 python 列表格式。.delete()
是 Django 的一个 ORM 特性。
推荐阅读
- streamwriter - 编译程序后无法启动bat文件
- architecture - 在不涉及 CPU 的情况下从 HD 迁移到 RAM?
- php - php laravel 登录和注册错误通知
- plot - 如何在 Julia 中绘制带有误差线的函数
- java - 当两个 jar 具有相同的类集时,使用 jboss/wildfly 的类加载冲突,如何设置顺序/优先级?
- facebook-graph-api - 通过 Instagram 图形 api 刷新长寿命令牌
- php - 无法从laravel中的数组访问密钥
- python - 如何摆脱 .pyc
- python - 如何将 TextInput(Factory object) 值分配给变量
- opencv-python - 如何在核线上找到匹配的像素?