从view.py提交模型类

时间:2015-10-13 00:03:01

标签: python django

我曾尝试使用视图功能提交模型类,但表单尚未提交。

这是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 %}

2 个答案:

答案 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">

注意点“。”,因为你使用相同的视图来显示表格并处理它就可以了。