데이터베이스 방법

4277 단어 django
최근 애플리케이션 개발 과정에서 사소한 문제가 발생했습니다. 원인과 방법인 데이터베이스 방법을 기록하는 김에
우리는 직접 예를 통해 강의한다.
    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을 통해 증수 라이브러리에 직접 저장하고 대응하는 모델의 새로운 대상을 생산할 수 있습니다. 왜 생산을 해야 하는지, 면후에...이것은 정보를 저장하는 데 중요한 것이다
f = ArticleForm(request.POST)

new_article = f.save()

<2> 데이터 라이브러리에서 모델의 대상을 추출한 다음form 매개 변수 instance 방법을 통해 이 form을 실례화할 수 있습니다. 이것은 상세한 정보를 보기 위한 중요합니다
a = Article.objects.get(pk=1)

 f = ArticleForm(instance=a)

 f.save()

<3>post가 있고 instance가 있으면post를 위주로 하는데 이 중요한 것은 상세한 정보를 수정하는 데 쓰인다
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

글이 끝나면 프로그래머의 우스갯소리 어록을 공유합니다. 포토샵이 생기고 나서 저는 더 이상 사진을 믿지 않습니다!(포토샵이 없었던 시절, 필름 사진 시절에 가짜를 만든 것도 적지 않았는데, 그때는 모두 가짜를 믿었다!)

좋은 웹페이지 즐겨찾기