django中ModelForm学习系列一~save方法

来源:互联网 发布:centos安装拼音输入法 编辑:程序博客网 时间:2024/06/17 03:16

我们直接通过例子来讲解:

modes.py 代码如下:

from django.db import modelsfrom django.forms import ModelFormTITLE_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.nameclass Book(models.Model):    name = models.CharField(max_length=100)    authors = models.ManyToManyField(Author)
forms.py 代码如下:

class AuthorForm(ModelForm):    class Meta:        model = Authorclass BookForm(ModelForm):    class Meta:        model = Book

下面说说save方法

见到的save方法无非有以下几种形式:

<1>通过页面post过来的数据 form接收 直接保存到数据库,同时能够产生对应的modes的一个新对象,为什么要产生,后面讲....这个主要用来保存信息

 f = ArticleForm(request.POST)new_article = f.save()
<2>从数据库中取出modes的对象,然后通过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 = Authorclass BookForm(ModelForm):    class Meta:        model = Book
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信代购买到假货了怎么办 微信代购收到假货怎么办 苹果商店下载很慢怎么办 谷歌商店下载东西慢怎么办 买家说少发货了怎么办 人肉代购被海关扣了怎么办 韩国代购被海关扣了怎么办 爱奇艺开通自动续费忘了账号怎么办 小米手机云储存空间不足怎么办 路由器被黑了打不开网页怎么办 致人轻伤跑了怎么办 轻伤对方要30万怎么办 老公用老婆的钱怎么办 想注册个公司要怎么办 域名续费不知道找谁怎么办 代收快递弄丢了怎么办 货到付款的快递人不在怎么办 快递送货上门人不在怎么办 ems快递签收人不在怎么办 快递被别人取了怎么办 怎么办快递宗和收发点 快递电话写错了怎么办 网上买沙发想退货怎么办 买的电脑想退货怎么办 买了衣服想退货怎么办 天猫买药审核通过后不要了怎么办 京东维修无发票怎么办 京东维修没有发票怎么办 苹果6s外音没了怎么办 苹果6splus开不了机怎么办 顺丰快递寄件填错收件人地址怎么办 收快递电话换了怎么办 顺丰快递没人收怎么办 网购东西没收到怎么办 中通快递没收到怎么办 快递员不给验货怎么办 顺丰验货不要了怎么办 闲鱼买家掉包了怎么办 闲鱼正在退款中怎么办 拒收货物卖家拒绝退款怎么办 货物没问题淘宝卖家拒收怎么办