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 ...
随机推荐
- hrbustoj 1305:多边形(计算几何,极角排序练习)
多边形 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 113(42 users) Total Accepted: 51(3 ...
- [转]Loadrunner随机生成15位数字串
Loadrunner随机生成15位数字串 PS:http://www.51testing.com/html/43/6343-19789.html 今天看到一个网友的问题,是想生成一个15位的数字串来进 ...
- 【mysql-python】安装+基本使用
安装:从SourceForge.net上下载最新的MySQLdb,http://sourceforge.net/projects/mysql-python/ 运行exe文件 使用 From:http: ...
- 【cb2】扩展硬盘
1.硬盘为sata串口 2.参考 http://docs.cubieboard.org/tutorials/ct1/installation/moving_rootfs_from_nandflash_ ...
- 提高ASP.NET网站性能的方法
http://www.360doc.com/content/14/0705/18/7662927_392224856.shtml Asp.NET有许多秘密,当你了解了这些秘密后,可以使得你的ASP ...
- kotlin gradle的修改
Kotlin插件包括一个让我们配置Gradle的工具.但是我还是倾向于保持我对Gradle文件读写的控制权,否则它只会变得混乱而不会变得简单.不管怎么样,在使用自动工具之前知道它是怎么工作的是个不错的 ...
- flask模块
import flask, json #把当前的文件当成一个服务 server = flask.Flask(__name__) @server.route('/index', methods=['ge ...
- 【黑金原创教程】【TimeQuest】【第五章】网表质量与外部模型
声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...
- 进击的RecyclerView入门一(简单上手)
虽然RecyclerView面世有一段时间了,但由于它的学习成本相对较高,很多码友只是粗略的认识了一下而没有细致的品味RecyclerView的真谛. 那么从现在开始我将带你装逼带你飞,一起领略Goo ...
- C#/java 执行oracle package
使用pl/sql创建package CREATE OR REPLACE PACKAGE FirstPage is type outlist is ref cursor; Procedure p_get ...