Form、ModelForm、ModelFormSet

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')
    )
from
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'
modelfrom

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}}
    這樣纔不會報錯
ModelFromSet
相關文章
相關標籤/搜索