Django细谈之:Model和ModelForm关联

原创 2016年06月02日 13:41:39

Model(django.db.models.Model)

官方解释为A model is the single, definitive source of data about your data. It contains the essential fields and behaviors of the data you’re storing. Generally, each model maps to a single database table.

其实就是django提供给开发人员用于设计数据集的接口,model提供了多种数据类型,很好的提高了开发人员在数据集处理效率。一般而言,每一个数据集在后台数据库中都对应一个表单。数据表单可以通过django指令自动生成,当然用户也可以根据数据库需要自行设计表单,但是表单必须与Model数据集元素类型保持一定的对应关系。

ModelForm(django.forms.ModelForm)

如果开发人员需要设计以数据库驱动的应用,也就是说需要前端提交表单来修改后台数据库,这个时候就需要ModelForm。它实质上就是Model的表单抽象,可以在其内部做更复杂的操作,这些操作主要是针对表单数据的。

那么问题来了,模型(Model)和模型表单(ModelForm)是如何关联的呢?

每一个ModelForm都依托一个Model,需要先设计Model之后,在设计对应的ModelForm

假设已定义好Model,如下

class Book(models.Model):
    name = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
则对应需要设计一个ModelForm
import Book
class BookForm(ModelForm):
    class Meta:
        model=Book
    def clean_<fieldname>:
        ...


这样就建立了Model和ModelForm,代码在处理客户端POST请求时,将request导向某个函数,函数内部,使用

form = BookForm(request.POST, instance=None)
就可以将表单转换为内部form对象了,在经过一些列的操作,诸如is_valid、clean_<fieldname>、pre_save信号处理等,就可以将表单数据保存了,方法

from.save()




Django之Mode的外键自关联和引用未定义的Model

Django Model的外键自关联 在django的model定义中,有时需要某个Field引用当前定义的Model,比如一个部门(Department)的Model,它有一个字段是上级部门(su...
  • ranyixu11
  • ranyixu11
  • 2017年07月30日 14:18
  • 1714

Django(九)上:ModelForm操作

一、内容回顾 Model - 数据库操作 - 验证 class A(MOdel): user = ...
  • fgf00
  • fgf00
  • 2017年02月07日 22:25
  • 4987

五. Django的forms与ModelForm

在前一小节中,我们主要通过页面来显示了信息列表,那么如何在页面中进行增删改查的工作呢?在这一小节中,我们将通过页面来对现有数据进行增删改的操作。   1.      Forms的介绍: 我们...
  • alex_chen_16
  • alex_chen_16
  • 2016年03月08日 21:09
  • 7609

Django细谈之:Model和ModelForm关联

Model(django.db.models.Model) 官方解释为A model is the single, definitive source of data about your data....
  • ithomeman
  • ithomeman
  • 2016年06月02日 13:41
  • 1545

Django1.6中models模型关联的方法整理

1、models.ForeignKey 参考:Django 1.6 documentation-------models
  • ice4026
  • ice4026
  • 2014年08月13日 01:54
  • 855

Django(八)下:Model操作和Form操作、序列化操作

二、Form操作一般会创建forms.py文件,单独存放form模块。Form 专门做数据验证,而且非常强大。有以下两个插件: fields :验证(肯定会用的) widgets:生成HTML(...
  • fgf00
  • fgf00
  • 2017年01月20日 10:28
  • 1486

关于django model form

modelform从model自动导出form,基本使用如下: class XXXForm(forms.ModelForm):     class Meta:         model = Your...
  • secretx
  • secretx
  • 2013年10月10日 14:57
  • 2934

Django项目实践3 - Django模型(字段、数据库操作及模型继承)

http://blog.csdn.net/pipisorry/article/details/45725953 Django数据库字段类型(Field types) AutoField class...
  • pipisorry
  • pipisorry
  • 2015年05月14日 20:51
  • 8331

Django模型修改及数据迁移

Migrations Django中对Model进行修改是件麻烦的事情,syncdb命令仅仅创建数据库里还没有的表,它并不对已存在的数据表进行同步修改,也不处理数据模型的删除。 如果你新增或修改...
  • yongche_shi
  • yongche_shi
  • 2015年07月20日 12:21
  • 1414

django中ModelForm多表单组合的解决方案

django是python语言快速实现web服务的大杀器,其开发效率可以非常的高!但因为秉承了语言的灵活性,django框架又太灵活,以至于想实现任何功能都有种“条条大路通罗马”的感觉。这么多种选择放...
  • russell_tao
  • russell_tao
  • 2016年10月10日 18:18
  • 6396
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Django细谈之:Model和ModelForm关联
举报原因:
原因补充:

(最多只允许输入30个字)