27.neil
27.neil

Reputation: 109

How to exclude some fields in validation of Form in Django

Sample Form:

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',)

Sample for 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

I want to exclude the field value_label and balance from PayOrderedItemForm, it will always fail on validation of poItem (poItem.is_valid)

The following error are: 1. balance: This field is required. 2. value_label: This field is required.

Please help me the correct solution how to exclude the balance and value_label in validation.

Upvotes: 2

Views: 977

Answers (1)

Simeon Visser
Simeon Visser

Reputation: 122516

You can use required=False to indicate that a field is not required. For example:

field = forms.CharField(required=False)

Upvotes: 3

Related Questions