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. hrbustoj 1305:多边形(计算几何,极角排序练习)

    多边形 Time Limit: 1000 MS     Memory Limit: 65536 K Total Submit: 113(42 users)   Total Accepted: 51(3 ...

  2. [转]Loadrunner随机生成15位数字串

    Loadrunner随机生成15位数字串 PS:http://www.51testing.com/html/43/6343-19789.html 今天看到一个网友的问题,是想生成一个15位的数字串来进 ...

  3. 【mysql-python】安装+基本使用

    安装:从SourceForge.net上下载最新的MySQLdb,http://sourceforge.net/projects/mysql-python/ 运行exe文件 使用 From:http: ...

  4. 【cb2】扩展硬盘

    1.硬盘为sata串口 2.参考 http://docs.cubieboard.org/tutorials/ct1/installation/moving_rootfs_from_nandflash_ ...

  5. 提高ASP.NET网站性能的方法

    http://www.360doc.com/content/14/0705/18/7662927_392224856.shtml   Asp.NET有许多秘密,当你了解了这些秘密后,可以使得你的ASP ...

  6. kotlin gradle的修改

    Kotlin插件包括一个让我们配置Gradle的工具.但是我还是倾向于保持我对Gradle文件读写的控制权,否则它只会变得混乱而不会变得简单.不管怎么样,在使用自动工具之前知道它是怎么工作的是个不错的 ...

  7. flask模块

    import flask, json #把当前的文件当成一个服务 server = flask.Flask(__name__) @server.route('/index', methods=['ge ...

  8. 【黑金原创教程】【TimeQuest】【第五章】网表质量与外部模型

    声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...

  9. 进击的RecyclerView入门一(简单上手)

    虽然RecyclerView面世有一段时间了,但由于它的学习成本相对较高,很多码友只是粗略的认识了一下而没有细致的品味RecyclerView的真谛. 那么从现在开始我将带你装逼带你飞,一起领略Goo ...

  10. C#/java 执行oracle package

    使用pl/sql创建package CREATE OR REPLACE PACKAGE FirstPage is type outlist is ref cursor; Procedure p_get ...