Skip to main content
 首页 » 编程设计

python之如何在 Django 的表单验证中排除某些字段

2024年08月28日31freeliver54

示例表格:

class PayOrderedItemForm(forms.ModelForm): 
 
    value_label = forms.CharField(widget = forms.HiddenInput()) 
    product_id = forms.ModelChoiceField( 
                        queryset = Product.objects.all(), 
                        widget = forms.HiddenInput()) 
    balance = forms.CharField(widget = forms.HiddenInput()) 
    class Meta: 
        model = PayOrderedItem 
        exclude = ('payorder_id', 'balance', 'value_label',) 

POST 示例:

def PayOrderView (request, order_id): 
... 
 
    if request.method == "POST": 
        poForm = PayOrderForm(request.POST) 
        ##poItem = PayOrderedItemFormset(request.POST, request.FILES) 
        formset = inlineformset_factory( 
                        PayOrder, 
                        PayOrderedItem, 
                        form = PayOrderedItemForm, 
                        can_delete=False) 
        poItem = formset(request.POST, request.FILES) 
 
        if poItem.is_valid() and poForm.is_valid() : 
            poForm.save() 
            print "poItem >> ", poItem 
            poItem.save() 
        else : 
            print "invalid poItem", poItem.errors 
 
 
        return HttpResponseRedirect(reverse('orderdetail', args=(order_id))) 
    else : 
        ## GET process 

我想从 PayOrderedItemForm 中排除字段 value_label 和 balance,它总是会在验证 poItem (poItem.is_valid) 时失败

错误如下: 1. balance:此字段为必填项。 2. value_label:必填字段。

请帮我解决如何在验证中排除 balance 和 value_label 的正确解决方案。

请您参考如下方法:

您可以使用 required=False 来指示某个字段不是必需的。例如:

field = forms.CharField(required=False)