1. modelForm
  2.  
  3. (1)
  4. model的知识点:
  5.  
  6. class UserInfo(AbstractUser):
  7. tel = models.CharField(max_length=32)
  8. gender = models.IntegerField(choices=((1, "男"), (2, "女")), default=1)
  9.  
  10. yuan = UserInfo.objects.get(pk=1)
  11. yuan.get_gender_display()
  12.  
  13. (2)
  14. modelform使用
  15. model.py:
  16.  
  17. class Book(models.Model):
  18. nid = models.AutoField(primary_key=True)
  19. title = models.CharField(max_length=32)
  20. price = models.DecimalField(max_digits=8, decimal_places=2) # 999999.99
  21. pub_date = models.DateTimeField() # "2012-12-12"
  22.  
  23. # comment_count=models.IntegerField(default=100)
  24. # poll_count=models.IntegerField(default=100)
  25.  
  26. publish = models.ForeignKey(to="Publish", on_delete=models.CASCADE) # 级联删除
  27. authors = models.ManyToManyField(to="Author")
  28.  
  29. def __str__(self):
  30. return self.title
  31.  
  32. form.py:
  33.  
  34. # 构建modelform
  35. class BookModelForm(forms.ModelForm):
  36. class Meta:
  37. model = Book
  38. fields = "__all__"
  39.  
  40. '''
  41. BookModelForm等同于:
  42. class BookForm(forms.Form):
  43. title=forms.CharField(max_length=32)
  44. price=forms.IntegerField()
  45. pub_date=forms.DateField(widget=widgets.TextInput(attrs={"type":"date"}))
  46. #publish=forms.ChoiceField(choices=[(1,"AAA"),(2,"BBB")])
  47. publish=forms.ModelChoiceField(queryset=Publish.objects.all())
  48. authors=forms.ModelMultipleChoiceField(queryset=Author.objects.all())
  49.  
  50. '''
  51.  
  52. 逻辑:
  53. 添加书籍:
  54.  
  55. def add(reqeust):
  56. if GET请求:
  57. form = BookModelForm()
  58. return render(reqeust, {"form": form})
  59. '''
  60. 渲染页面
  61. <form action="" method="post" novalidate>
  62. {% csrf_token %}
  63. {% for field in form %}
  64. <div class="form-group">
  65. <label for="title">{{ field.label }}</label>
  66. {{ field }}
  67. <span>{{ field.errors.0 }}</span>
  68. </div>
  69. {% endfor %}
  70. <input type="submit" value="提交" class="btn btn-default pull-right">
  71. </form>
  72. '''
  73.  
  74. else POST请求:
  75. form = BookModelForm(request.POST)
  76. if form.is_valid():
  77. form.save() # Book.objects.create(clean_data)
  78. return redirect("/")
  79. else:
  80. return render(reqeust, {"form": form})
  81.  
  82. 编辑书籍:
  83.  
  84. def edit(request, id):
  85. edit_obj = Book.objects.get(pk=id)
  86. if GET请求:
  87. form = BookModelForm(instance=edit_obj)
  88. return render(reqeust, {"form": form})
  89. '''
  90. 渲染页面同添加页面
  91.  
  92. '''
  93.  
  94. else POST请求:
  95. form = BookModelForm(request.POST, instance=edit_obj)
  96. if form.is_valid():
  97. form.save() # edit_obj.update(clean_data)
  98. return redirect("/")
  99. else:
  100. return render(reqeust, {"form": form})

modelform 使用的更多相关文章

  1. 【Django】--ModelForm组件

    ModelForm a.class Meta: model,#对应Model的 fields=None,#字段 exclude=None,#排除字段 labels=None,#提示信息 help_te ...

  2. Django Form and Modelform Admin定义 高级查询)

    Django的form表单一般具有两种功能 1. 验证输入 2.输入HTML ---------模板----------- from django import forms class BookFor ...

  3. Django ModelForm and Form

    django表单系统中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm 关于django的表单系统,主要分两种 基于django.forms.Form 基于dj ...

  4. Django: ModelForm中Meta的fields等成员介绍

    class MyForm(forms.ModelForm): realname = forms.CharField() phone = forms.CharField() class Meta: mo ...

  5. Django中ModelForm应用

    Django中ModelForm的应用 在传统中Form提交的POST的数据在服务器端获取时将不得不一一获取并验证数据的可靠性,但是使用django提供的Form时可简化该过程并提供相应的验证,同时D ...

  6. Django中使用ModelForm实现Admin功能

    接上一篇<Django中使用Bootstrap> ModelForm 可以将数据库中的信息展示在一个表中,因此我们在查询数据库信息时可以使用ModelForm在前端展示查询到的信息. 在上 ...

  7. django Modelform

    前言: 为什么要用form去验证呢? 我们提交的是form表单,在看前端源码时如果检查到POST URL及我们提交的字段,如果没有验证我们是否可以直接POST数据到URL,后台并没有进行校验,直接处理 ...

  8. ModelForm

    这是一个神奇的组件,通过名字我们可以看出来,这个组件的功能就是把model和form组合起来,对,你没猜错,相信自己的英语水平. 先来一个简单的例子来看一下这个东西怎么用: 比如我们的数据库中有这样一 ...

  9. Django的ModelForm组件

    创建类 from django.forms import ModelForm from django.forms import widgets as wd from app01 import mode ...

  10. Django ModelForm修改默认的控件属性

    Django 中利用ModelForm 可以快速地利用数据库对应的Model 子类来自动创建对应表单. 例如: from django.db import models from django.for ...

随机推荐

  1. 学习《深入理解C#》—— 可空类型、可选参数和默认值 (第一章1.3)

    目录 C#可空类型 C# 可选参数和默认值 C# 可空类型 在日常生活中,相信大家都离不开手机,低头族啊!哈哈... 假如手机厂商生产了一款新手机,暂时还未定价,在C#1中我们该怎么做呢? 常见的解决 ...

  2. WPF Expander控件(扩展面板)

    这算是我比较喜欢的一个控件,以前在Winform中也常用类似的.它包装了一块内容,通过单击一个小箭头按钮可以显示或隐藏所包含的内容.在线帮助以及Web页面经常使用这种技术,因为既可以包含大量内容,而又 ...

  3. JQuery------实现点击左右按钮,切换图片功能

    如图: 代码: html @*商品主图片*@ <div class="product-img" style="display:table-cell;width:40 ...

  4. Sql创建约束

    add constraint pk_studentno primary key(StudentNo) //主键 add constraint fk_student_grade_gradeid fore ...

  5. 第十六篇:Linux系统编程中环境变量的使用

    前言 在 UNIX Like 系统中,存有各类系统/应用程序的环境变量,可通过修改之改变系统/应用程序的执行效果:除此之外,用户还可以定义自己的环境变量,供自己写的程序使用. 本文将说明如何在程序中设 ...

  6. Spring学习笔记--使用注解装配

    使用@Autowired注解 从Spring2.5开始,最有趣的一种装配Spring Bean的方式是使用注解自动装配Bean的属性.Spring默认禁用注解装配,最简单的启用方式是使用Spring的 ...

  7. Slave_SQL_Running: No mysql同步故障

    参考:http://blog.itpub.net/29500582/viewspace-1318552/ http://blog.csdn.net/seteor/article/details/172 ...

  8. 理解CSS3 isolation: isolate的表现和作用

    转自:http://www.zhangxinxu.com/wordpress/?p=5155 只要元素可以创建层叠上下文,就可以阻断mix-blend-mode! 于是,不仅仅是isolation:i ...

  9. 安装TortoiseSVN客户端时遇到的异常

    环境:WindowsXP,安装 双击SVN安装程序"TortoiseSVN-1.8.5.25224-win32-svn-1.8.8.msi"后,出现 "无法通过Sindo ...

  10. Hadoop伪分布安装详解(五)

    目录: 1.修改主机名和用户名 2.配置静态IP地址 3.配置SSH无密码连接 4.安装JDK1.7 5.配置Hadoop 6.安装Mysql 7.安装Hive 8.安装Hbase 9.安装Sqoop ...