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>
나는 내가 수정 버튼을 클릭하면, 내가 필드를 완료하고 내가 이전 페이지로 버튼을 누를 때, 데이터베이스에서 항목 필드가 업데이트되지 않는 이유를 모르겠어요. 의견 있으십니까?
HTML 폼 태그에서 "/ peoples /"를 삭제하면 기존 페이지를 수정하는 대신 새 레코드가 만들어집니다. –
'POST' 데이터와 함께 폼 생성자에'instance'를 전달해보십시오 :'form = PeopleForm (request.POST, instance = data)' –
정말 고마워요! –