我曾尝试使用视图功能提交模型类,但表单尚未提交。
这是models.py文件中的模型类:
class Campaign(models.Model):
username = models.OneToOneField(User, unique=True)
title = models.CharField(max_length=200)
message = models.TextField()
link = models.CharField(max_length=200)
added= models.DateTimeField(auto_now_add=True)
这个形式在forms.py:
中class CampaignForm(forms.ModelForm):
class Meta:
model = Campaign
fields=('title','message')
我试图在views.py:
使用此功能提交此表单def Campaign(request):
form = CampaignForm(request.POST or None)
if request.method == 'POST':
if form.is_valid():
submit= Campaign(username=request.user)
submit.save()
context={
'form':form,
}
return render(request, 'campaigns.html',context)
这是html文件:
{% extends "base.html" %}
{% block content %}
<form action="" method="POST" class="">
{% csrf_token %}
{{form.as_p}}
<input type="submit">
</form>
{% endblock content %}
答案 0 :(得分:1)
您必须在表单html中执行action="#"
,因为某些浏览器无法接受空操作值。
此部分代码中也有错误:
submit= Campaign(username=request.user)
submit.save()
您必须将表单值放入对象中,您可以这样做:
submit = form.save(commit=False)
submit.username = request.user
submit.save()
答案 1 :(得分:0)
如果action属性为空,某些浏览器将无法发布,请尝试使用
<form action="." method="POST">
注意点“。”,因为你使用相同的视图来显示表格并处理它就可以了。