python - 出现此错误-__init__() 得到了一个意外的关键字参数“实例”
问题描述
我使用非基于模型的表单 django。一旦我得到数据,我就会创建一个模型对象。但是当我尝试编辑我的帖子(基于博客/引用的应用程序)时,我无法使用特定帖子的模型对象创建表单对象。
这些是我的代码:
视图.py:
def quote_form(request):
if request.method=='POST':
form=Quote(request.POST)
if form.is_valid():
quote=form.cleaned_data['quote']
author=form.cleaned_data['author']
popularity=form.cleaned_data['popularity']
category=form.cleaned_data['category']
p=Quote1(quote=quote, author=author, popularity=popularity, category=category)
p.save()
return redirect("quote_list")
else:
form=Quote()
return render(request,'quote/form.html',{'form':form})
def quote_edit(request, pk):
q = get_object_or_404(Quote1, pk=pk)
if request.method == "POST":
form = Quote(request.POST,instance=q)
if form.is_valid():
q = form.save(commit=False)
q.author = request.user
q.save()
return redirect('quote_detail', pk=q.pk)
#return render(request,"blog/post_detail.html",{'post':post})
else:
form = Quote(instance=q)
return render(request, 'quote/quote_edit.html', {'form': form})
模型.py:
class Quote1(models.Model):
quote=models.CharField(max_length=200)
author=models.CharField(max_length=200)
popularity=models.IntegerField()
category=models.CharField(max_length=40)
表格.py:
class Quote(forms.Form):
quote=forms.CharField()
author=forms.CharField()
popularity=forms.IntegerField()
category=forms.ChoiceField(choices=[('life','life'),('happiness','happiness'),('love','love'),('truth','truth'),
('inspiration','inspiration'),('humor','humor'),('philosophy','philosophy'),('science','science')])
解决方案
尝试这个:
def quote_edit(request, pk):
q = get_object_or_404(Quote1, pk=pk)
if request.method == "POST":
form = Quote(request.POST)
if form.is_valid():
quote=form.cleaned_data['quote']
author=form.cleaned_data['author']
popularity=form.cleaned_data['popularity']
category=form.cleaned_data['category']
q.quote=quote
q.author=author
q.popularity=popularity
q.category=category
q.save()
else:
form = Quote(initial=reauest.POST.copy())
return render(request, 'quote/quote_edit.html', {'form': form})
PS:使用 ModelForm 会是更好的方法。如果您可以切换到 ModelForm,我也可以提供帮助。
推荐阅读
- snowflake-cloud-data-platform - UDF 作为雪花中的默认值
- python - 如何使用 Python 将 WEKA 分类器错误保存到 arff 文件?
- yaml - 在 YAML 中构建简单的层次结构
- c# - 使用 userid++ 存储用户 ID 有效,但 CSV 文件中三个“默认用户”的最后一个用户正在获取 useridd++
- python-3.x - 为什么由 Python 脚本运行的 MAC OS X“终端命令”会给出错误输出“找不到命令”?
- python - sys.exit 不会终止被测代码
- javascript - jQuery 显示表单文本输入
- node.js - 使用 Application Insights 跟踪自定义错误时出现问题:TypeError:无法读取未定义的属性“堆栈”
- python - Python 长度是 4x 太长(从数组解码到 utf-8)
- c# - 获取桌面中的所有进程