HY。我想修改我的数据库的记录。 我有:
models.py
class People(models.Model):
first_name = models.CharField(max_length = 50)
last_name = models.CharField(max_length = 50)
email = models.EmailField(blank = True)
grade = models.CharField(max_length = 2)
def __unicode__(self):
return '%s %s' % (self.first_name, self.last_name)
class PeopleForm(ModelForm):
class Meta:
model = People
fields = ['first_name', 'last_name', 'email', 'grade']
views.py
def modify(request, person_pk):
title = 'Creating new program'
template = 'modify.html'
data = People.objects.get(pk = person_pk)
form = PeopleForm(instance=data)
context = {'form': form}
if request.POST:
form = PeopleForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse('/peoples/'))
else:
return render_to_response(template, context, context_instance=RequestContext(request))
return render_to_response(template, context, context_instance=RequestContext(request))
urls.py
url(r'^modify/(?P<person_pk>.*)$', views.modify, name='modify'),
forms.py
class PeopleForm(forms.ModelForm):
class Meta:
model = People
fields = ('first_name', 'last_name', 'email', 'grade')
和模板
<form action="/peoples/" method="post">{% csrf_token %}
<ul>
{{form.as_ul}}
</ul>
<input type="submit" name="submit" value="Modify">
</form>
我不知道为什么当我点击修改按钮时,我填写了字段,当我按下按钮到上一页时,数据库中的输入字段不会更新。你有什么建议吗?
答案 0 :(得分:1)
我看到的主要内容看起来很奇怪,您的HTML form
标记有"/peoples/"
作为其操作,但该URL未绑定到我们在此处看到的代码中的表单处理视图。我主要在表单中使用action=""
,因此它会提交到呈现视图的相同URL。
其次,当您在视图中重新定义python变量form
时:
if request.POST:
form = PeopleForm(request.POST)
您已将旧的form
分配给上下文,但不要重新分配。因此,如果您的表单无效,您将看不到错误或提交的值。
如果您的表单操作错误,以及未使用POST
数据调用该视图,这当然无关紧要。