django에서 ModelForm 학습 시리즈의 ~save 방법
modes.py 코드는 다음과 같습니다.
from django.db import models
from django.forms import ModelForm
TITLE_CHOICES = (
('MR', 'Mr.'),
('MRS', 'Mrs.'),
('MS', 'Ms.'),
)
class Author(models.Model):
name = models.CharField(max_length=100)
title = models.CharField(max_length=3, choices=TITLE_CHOICES)
birth_date = models.DateField(blank=True, null=True)
def __unicode__(self):
return self.name
class Book(models.Model):
name = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
forms.py 코드는 다음과 같습니다.class AuthorForm(ModelForm):
class Meta:
model = Author
class BookForm(ModelForm):
class Meta:
model = Book
다음은 save 방법을 알려드릴게요.
본 save 방법은 다음과 같은 몇 가지 형식이 있을 수 있다.
<1>페이지post를 통해 온 데이터form을 수신하여 데이터베이스에 직접 저장하고 대응하는modes의 새로운 대상을 생성할 수 있습니다. 왜 만들어야 하는지는 다음에 설명합니다...이것은 주로 정보를 저장하는 데 쓰인다
4
f = ArticleForm(request.POST)
new_article = f.save()
<2> 데이터베이스에서 모델의 대상을 추출한 다음에form 매개 변수 instance 방법을 통해 이form을 실례화할 수 있다. 이것은 구체적인 정보를 보기 위한 것이다.4
a = Article.objects.get(pk=1)
f = ArticleForm(instance=a)
f.save()
<3>는post와 instance가 있으면post를 위주로 하는데 이것은 구체적인 정보를 수정하는 데 사용된다.4
a = Article.objects.get(pk=1)
f = ArticleForm(request.POST, instance=a)
f.save()
<4> 특히 주의해야 할 것은save 방법에는commit라는 매개 변수가 있는데 기본적으로true이다. 즉, f.save()를 사용할 때 데이터를 데이터베이스에 저장하지만 commit=false를 표시하면 데이터베이스에 저장하지 않는다. 이것은 위에 new에서 나온 새로운 대상이 작용하기 때문에 데이터에 대해 다른 수정을 할 수 있다. 이것은 뒤에서 설명할 것이다. 거의 몇 가지 방법은 다음과 같다.다음은 완전한 사례를 붙인다. - 주로 보존을 대상으로 하고 다른 것은 여러분이 직접 해 보셔도 됩니다.
models와forms는 위로 당겨주세요.
urls.py:
urlpatterns=patterns('',
url(r'^test/modelform/$',testModelForm,name='testModelForm'),
)
views.py
def testModelForm(request):
# a=Author.objects.get(pk=1)
# form=AuthorForm(instance=a)
form=AuthorForm()
if request.method=='POST':
form=AuthorForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse('welcome'))
return render_to_response('testModelForm.html',locals(),RequestContext(request))
html:
{% extends 'base.html' %}
{% block title %} ModelForm{% endblock %}
{% block content %}
<form method="post" action=".">{% csrf_token %}
<table>
<tr><td><lable for='id_name'> :</lable></td><td>{{ form.name }}</td><td>{{ form.name.errors }}</td></tr>
<tr><td><lable for='id_title'> :</lable></td><td>{{ form.title }}</td><td>{{ form.title.errors }}</td></tr>
<tr><td><lable for='id_birth_date'> :</lable></td><td>{{ form.birth_date }}</td><td>{{ form.birth_date.errors }}</td></tr>
<tr><td><input type="submit" value=" " /></td><td><input type="reset" value=" "/></td><td></td></tr>
</table>
</form>
{% endblock %}
후속은 다음 절...
class AuthorForm(ModelForm):
class Meta:
model = Author
class BookForm(ModelForm):
class Meta:
model = Book
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.