modelform 使用
- modelForm
- (1)
- model的知识点:
- class UserInfo(AbstractUser):
- tel = models.CharField(max_length=32)
- gender = models.IntegerField(choices=((1, "男"), (2, "女")), default=1)
- yuan = UserInfo.objects.get(pk=1)
- yuan.get_gender_display()
- (2)
- modelform使用
- model.py:
- class Book(models.Model):
- nid = models.AutoField(primary_key=True)
- title = models.CharField(max_length=32)
- price = models.DecimalField(max_digits=8, decimal_places=2) # 999999.99
- pub_date = models.DateTimeField() # "2012-12-12"
- # comment_count=models.IntegerField(default=100)
- # poll_count=models.IntegerField(default=100)
- publish = models.ForeignKey(to="Publish", on_delete=models.CASCADE) # 级联删除
- authors = models.ManyToManyField(to="Author")
- def __str__(self):
- return self.title
- form.py:
- # 构建modelform
- class BookModelForm(forms.ModelForm):
- class Meta:
- model = Book
- fields = "__all__"
- '''
- BookModelForm等同于:
- class BookForm(forms.Form):
- title=forms.CharField(max_length=32)
- price=forms.IntegerField()
- pub_date=forms.DateField(widget=widgets.TextInput(attrs={"type":"date"}))
- #publish=forms.ChoiceField(choices=[(1,"AAA"),(2,"BBB")])
- publish=forms.ModelChoiceField(queryset=Publish.objects.all())
- authors=forms.ModelMultipleChoiceField(queryset=Author.objects.all())
- '''
- 逻辑:
- 添加书籍:
- def add(reqeust):
- if GET请求:
- form = BookModelForm()
- return render(reqeust, {"form": form})
- '''
- 渲染页面
- <form action="" method="post" novalidate>
- {% csrf_token %}
- {% for field in form %}
- <div class="form-group">
- <label for="title">{{ field.label }}</label>
- {{ field }}
- <span>{{ field.errors.0 }}</span>
- </div>
- {% endfor %}
- <input type="submit" value="提交" class="btn btn-default pull-right">
- </form>
- '''
- else POST请求:
- form = BookModelForm(request.POST)
- if form.is_valid():
- form.save() # Book.objects.create(clean_data)
- return redirect("/")
- else:
- return render(reqeust, {"form": form})
- 编辑书籍:
- def edit(request, id):
- edit_obj = Book.objects.get(pk=id)
- if GET请求:
- form = BookModelForm(instance=edit_obj)
- return render(reqeust, {"form": form})
- '''
- 渲染页面同添加页面
- '''
- else POST请求:
- form = BookModelForm(request.POST, instance=edit_obj)
- if form.is_valid():
- form.save() # edit_obj.update(clean_data)
- return redirect("/")
- else:
- return render(reqeust, {"form": form})
modelform 使用的更多相关文章
- 【Django】--ModelForm组件
ModelForm a.class Meta: model,#对应Model的 fields=None,#字段 exclude=None,#排除字段 labels=None,#提示信息 help_te ...
- Django Form and Modelform Admin定义 高级查询)
Django的form表单一般具有两种功能 1. 验证输入 2.输入HTML ---------模板----------- from django import forms class BookFor ...
- Django ModelForm and Form
django表单系统中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm 关于django的表单系统,主要分两种 基于django.forms.Form 基于dj ...
- Django: ModelForm中Meta的fields等成员介绍
class MyForm(forms.ModelForm): realname = forms.CharField() phone = forms.CharField() class Meta: mo ...
- Django中ModelForm应用
Django中ModelForm的应用 在传统中Form提交的POST的数据在服务器端获取时将不得不一一获取并验证数据的可靠性,但是使用django提供的Form时可简化该过程并提供相应的验证,同时D ...
- Django中使用ModelForm实现Admin功能
接上一篇<Django中使用Bootstrap> ModelForm 可以将数据库中的信息展示在一个表中,因此我们在查询数据库信息时可以使用ModelForm在前端展示查询到的信息. 在上 ...
- django Modelform
前言: 为什么要用form去验证呢? 我们提交的是form表单,在看前端源码时如果检查到POST URL及我们提交的字段,如果没有验证我们是否可以直接POST数据到URL,后台并没有进行校验,直接处理 ...
- ModelForm
这是一个神奇的组件,通过名字我们可以看出来,这个组件的功能就是把model和form组合起来,对,你没猜错,相信自己的英语水平. 先来一个简单的例子来看一下这个东西怎么用: 比如我们的数据库中有这样一 ...
- Django的ModelForm组件
创建类 from django.forms import ModelForm from django.forms import widgets as wd from app01 import mode ...
- Django ModelForm修改默认的控件属性
Django 中利用ModelForm 可以快速地利用数据库对应的Model 子类来自动创建对应表单. 例如: from django.db import models from django.for ...
随机推荐
- 学习《深入理解C#》—— 可空类型、可选参数和默认值 (第一章1.3)
目录 C#可空类型 C# 可选参数和默认值 C# 可空类型 在日常生活中,相信大家都离不开手机,低头族啊!哈哈... 假如手机厂商生产了一款新手机,暂时还未定价,在C#1中我们该怎么做呢? 常见的解决 ...
- WPF Expander控件(扩展面板)
这算是我比较喜欢的一个控件,以前在Winform中也常用类似的.它包装了一块内容,通过单击一个小箭头按钮可以显示或隐藏所包含的内容.在线帮助以及Web页面经常使用这种技术,因为既可以包含大量内容,而又 ...
- JQuery------实现点击左右按钮,切换图片功能
如图: 代码: html @*商品主图片*@ <div class="product-img" style="display:table-cell;width:40 ...
- Sql创建约束
add constraint pk_studentno primary key(StudentNo) //主键 add constraint fk_student_grade_gradeid fore ...
- 第十六篇:Linux系统编程中环境变量的使用
前言 在 UNIX Like 系统中,存有各类系统/应用程序的环境变量,可通过修改之改变系统/应用程序的执行效果:除此之外,用户还可以定义自己的环境变量,供自己写的程序使用. 本文将说明如何在程序中设 ...
- Spring学习笔记--使用注解装配
使用@Autowired注解 从Spring2.5开始,最有趣的一种装配Spring Bean的方式是使用注解自动装配Bean的属性.Spring默认禁用注解装配,最简单的启用方式是使用Spring的 ...
- Slave_SQL_Running: No mysql同步故障
参考:http://blog.itpub.net/29500582/viewspace-1318552/ http://blog.csdn.net/seteor/article/details/172 ...
- 理解CSS3 isolation: isolate的表现和作用
转自:http://www.zhangxinxu.com/wordpress/?p=5155 只要元素可以创建层叠上下文,就可以阻断mix-blend-mode! 于是,不仅仅是isolation:i ...
- 安装TortoiseSVN客户端时遇到的异常
环境:WindowsXP,安装 双击SVN安装程序"TortoiseSVN-1.8.5.25224-win32-svn-1.8.8.msi"后,出现 "无法通过Sindo ...
- Hadoop伪分布安装详解(五)
目录: 1.修改主机名和用户名 2.配置静态IP地址 3.配置SSH无密码连接 4.安装JDK1.7 5.配置Hadoop 6.安装Mysql 7.安装Hive 8.安装Hbase 9.安装Sqoop ...