django model form 关联

参考:

http://www.cnblogs.com/BeginMan/archive/2013/09/10/3312522.html

(1)、字段类型的对应,django model的字段类型对应到form的字段类型,这里列举一下几个重要的:

 

Model fieldForm field
BooleanFieldBooleanField
CharField  CharField with max_length
 DateField DateField
 DateTimeField DateTimeField
 FileField FileField
 ForeignKey ModelChoiceField
 IntegerField IntegerField
 ManyToManyField ModelMultipleChoiceField
 TextField CharField with widget=forms.Textarea
  • ForeignKey is represented by django.forms.ModelChoiceField, which is a ChoiceField whose choices are a model QuerySet.
  • ManyToManyField is represented by django.forms.ModelMultipleChoiceField, which is a MultipleChoiceField whose choices are a model QuerySet.

 

(2)、对应的属性

如果model 字段 有blank=True, 则表单类中对应的要 required=False,否则required=True

表单字段的 label 被设置为model field的 verbose_name  且第一个字符大写.

表单字段的 help_text 对应models field的 help_text

如果model 字段有choices 则表单字段widget 设置 Select

 

 

转载于:https://www.cnblogs.com/tongyan/p/4086162.html

DjangoFormModelForm都是用于处理表单数据的工具,但它们之间有一些重要的区别。 Form是一个用于处理表单数据的类,它与模型没有直接的关联Form的每个字段都需要手动定义,并且需要手动验证和处理数据。Form在处理非模型数据时非常有用,例如搜索表单或联系表单。 ModelFormForm的子类,它与一个模型类相关联ModelForm根据与模型类相关的字段自动生成表单字段,并且可以自动验证和处理数据。ModelForm在处理与模型相关的数据时非常有用,例如创建、编辑或更新模型实例。 下面是FormModelForm之间的一些主要区别: 1. 字段定义 在Form,每个字段都需要手动定义,例如: ``` from django import forms class ContactForm(forms.Form): name = forms.CharField() email = forms.EmailField() message = forms.CharField(widget=forms.Textarea) ``` 在ModelForm,字段自动从关联的模型生成,例如: ``` from django import forms from .models import Contact class ContactForm(forms.ModelForm): class Meta: model = Contact fields = ['name', 'email', 'message'] widgets = { 'message': forms.Textarea() } ``` 2. 数据处理 在Form,您需要手动验证和处理数据: ``` if form.is_valid(): name = form.cleaned_data['name'] email = form.cleaned_data['email'] message = form.cleaned_data['message'] # process data ``` 在ModelForm,数据自动验证和处理: ``` if form.is_valid(): contact = form.save(commit=False) # do something with contact contact.save() ``` 3. 数据库操作 在Form,您需要手动处理数据库操作: ``` from .models import Contact if form.is_valid(): name = form.cleaned_data['name'] email = form.cleaned_data['email'] message = form.cleaned_data['message'] contact = Contact(name=name, email=email, message=message) contact.save() ``` 在ModelForm,数据自动保存到数据库: ``` if form.is_valid(): contact = form.save() ``` 总的来说,FormModelForm都是用于处理表单数据的重要工具,但是它们之间有一些重要的区别。使用Form来处理非模型数据,使用ModelForm来处理与模型相关的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值