From:本身定義的from表單(不經常使用)django
from django import forms class GoodsForm(forms.Form): title = forms.CharField(required=True,error_messages={'required':'商品名稱不能問空'}) price = forms.IntegerField(required=True,error_messages={'required':'價格不能問空'}) source = forms.ChoiceField( required=True, error_messages={'required':'價格不能問空'}, choices=models.Source.objects.all().values_list('id','title') ) category = forms.ChoiceField( required=True, error_messages={'required': '分類不能問空'}, choices=models.Goods.category_choices ) store_room = forms.ChoiceField( required=True, error_messages={'required': '庫房不能問空'}, choices=models.StoreRoom.objects.all().values_list('id','title') )
ModelForm:使用的比較多
class GoodsModelForm(forms.ModelForm): class Meta: model = models.Goods fields = "__all__" error_messages = { 'title':{'required':'商品名稱不能爲空'} } widgets = { 'source':forms.RadioSelect() } def __init__(self,*args,**kwargs): super().__init__(*args,**kwargs) for name,field in self.fields.items(): if name == 'source': # print(field,type(field)) # from django.forms.models import ModelChoiceField field.empty_label = None else: field.widget.attrs['class'] = 'form-control'
ModelFormSet:批量操做的時候使用ide
視圖: 導入模塊 from django.forms.models import modelformset_factory 使用:modelformset_factory(model=models.Goods(models.類),form=GoodsModelForm(你本身寫的modelfrom),extra=1(有幾個空餘)) form_set = modelformset_factory() :使用須要實例化 當返回的時候 form_set = GoodsModelFormSet(data=request.POST) if form_set.is_valid(): form_set.save() 模板: 兩個東西必須加 每一條數據的id {{form_set.management_form}} 這樣纔不會報錯