Django 模型表单不更新数据库记录

Posted

技术标签:

【中文标题】Django 模型表单不更新数据库记录【英文标题】:Django Model form don't update database records 【发布时间】:2014-11-13 11:29:55 【问题描述】:

我是 django 新手,我想创建一个表单来更新一些数据库条目。

这是一个简单的表单,我有一个简单的输入文本,我在其中写下我要更新的记录的 ID:

main.html

<form method='post' action='/config/ idprov ' >
<input type="text" class="form-control" name="idprov" id="idprov" value =" idprov " />
<input class="btn btn-danger" type="submit" value="Config">
</form>

forms.py

from django import forms
from .models import Proveedor, Estado, Config

class ConfigForm(forms.ModelForm):
    class Meta:
        model = Config

这是我的views.py:

def configView(request,idprov):

    prov = Config.objects.get(idproveedor=idprov)
    if request.method == 'POST':
       form = ConfigForm(request.POST or None, instance=prov)
       if form.is_valid():
          form.save(commit=false)
          return HttpResponseRedirect('/monitor/')
    else:
       form = ConfigForm( instance=prov)
    return render_to_response('config.html',
                              'form':form)

我的模板 config.html:

% extends 'base.html' %
% block content %
<div class="container">
<div class="row">
<div class="col-md-4">
<form method='POST' action='' >
   <div class="form-group">% csrf_token %
         form.as_p 
   </div>
        <button type='submit' class="btn btn-primary">Grabar</button>
</form>
</div>
</div>
</div>
% endblock %

我的 urls.py:

from django.conf.urls import patterns, include, url
from prov.views import home
from prov.views import proveedores
from prov.views import estado
from prov.views import monitorViewV2

from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
    # Examples:
    url(r'^$', 'prov.views.home', name='home'),
    url(r'^proveedores/$', 'prov.views.proveedores', name='proveedor'),
    url(r'^estado/$', 'prov.views.estado', name='estado'),
    url(r'^monitor/$', 'prov.views.monitorView', name='monitor'),
    url(r'^monitorv/$', 'prov.views.monitorViewV2', name='monitorv2'),
    url(r'^config/(?P<idprov>\d+)/$', 'prov.views.configView',name='config'),
    url(r'^admin/', include(admin.site.urls)),
)

但我收到错误页面未找到。 我尝试跟随其他 sn-ps 并总是引发不同的错误。

我认为错误在于 urls.py 以及我从 main.html 传递参数的方式。

任何建议或sn-p将不胜感激

提前致谢

【问题讨论】:

here 是答案 【参考方案1】:

首先,您的视图中有一个form.save(commit=false),以后没有保存它,这意味着数据永远不会保存到模型中。

在模板 config.html 中的第二个表单操作为空 &lt;form method='POST' action=''&gt; 更改为 &lt;form method='POST' action='.'&gt;

希望对你有所帮助。

【讨论】:

感谢您的回复,但是找不到的错误页面仍然存在。我认为错误在 main.html 中。我很困惑 你的 urls.py 中有什么?

以上是关于Django 模型表单不更新数据库记录的主要内容,如果未能解决你的问题,请参考以下文章

更新多条记录的 Django 表单

Django:更新 X 数量模型的表单

Django 编辑表单数据:数据被复制而不是被更新

如何预填充 Django 更新表单并将其写回数据库

如何在更新 Laravel 中的记录时将表单发布数据加载到模型中

提交表单后,Django 没有更新我的数据库