如何将django表单信息输入到DB中

时间:2014-12-21 11:19:22

标签: python django forms django-forms

我在django网站上看到了表单文档,我想知道如何将数据添加到数据库中。

那就是HTML:

<form action="/your-name/" method="post">
    <label for="your_name">Your name: </label>
    <input id="your_name" type="text" name="your_name" value="{{ current_name }}">
    <input type="submit" value="OK">
</form>

这是文档中给出的函数示例:

def get_name(request):
    if request.method == 'POST':
        form = NameForm(request.POST)
        if form.is_valid():
            return HttpResponseRedirect('/thanks/')
    else:
        form = NameForm()

    return render(request, 'name.html', {'form': form})

现在我需要看看如何将名称添加到数据库中的函数。

2 个答案:

答案 0 :(得分:2)

我希望NameForm是一个模型形式。在这种情况下,只有save()将数据带入db。

if form.is_valid():
    form.save()
    return HttpResponseRedirect('/thanks/')

如果您的表单是普通表单,那么您需要获取传递的值并创建/赋值给/模型对象:

if form.is_valid():
    # modifying
    name_object = Name.objects.get(some_field=some_field)
    name_object.name_field = form.cleaned_data['your_name']
    name_object.save()

    # or creating
    new_name_object = Name(name_field=form.cleaned_data['your_name'])
    new_name_object.save()
    return HttpResponseRedirect('/thanks/')

答案 1 :(得分:0)

例如:

我自己的模特是这样的:

class MyModel(models.Model):
    var = models.CharField(max_length=10)

所以在我看来:

if form.is_valid():
    var = form.cleaned_data['var']
    # do insertion or modification or deletion
    obj = MyModel.objects.create(var=var)
    obj.save()

您最好看一下手册,详细说明。