Django细谈之:Model和ModelForm关联

Django的Model作为数据的单一来源,映射到数据库表,提供多种数据类型提升开发效率。ModelForm是Model的表单抽象,用于前端表单提交更新数据库。ModelForm基于已有的Model定义,允许进行复杂的数据操作。要建立关联,需先定义Model,再创建对应的ModelForm。

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()




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值