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
- django中ModelForm学习系列一~save方法
- django中ModelForm学习系列一~save方法
- django中ModelForm学习系列一~save方法
- Django中modelform的使用
- 关于django中ModelForm的instance
- Django框架学习笔记(26.ModelForm操作)
- django forms.modelform
- Django ModelForm的使用
- django modeladmin override ModelForm
- Django之ModelForm组件
- Django中的Form & ModelForm
- django中ModelForm多表单组合的解决方案
- Django学习系列(一)--安装Django
- django中save和add
- Django的ModelForm简单用法
- django表单使用forms.ModelForm
- django admin ModelForm field 验证
- Python django 入门学习系列(一)
- python pass作用
- Oracle OCP 培训笔记(2013年4月20日)
- 黑马程序员——IO流
- 利用位运算判断整数的正负
- 用WindowManager直接显示View
- django中ModelForm学习系列一~save方法
- NYOJ115 城市平乱
- 第八周 项目一:任务一(成员函数完成运算符的重载)
- 黑马程序员——eclipse及IDE开发工具的一点小知识
- Webview--如何让加载进来的页面自适应手机屏幕分辨率居中显示
- Intent的FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONT
- 志与誓
- PowerISO v5.6
- centos6.4 bcm4313无线驱动安装