Override Django form field's name attr

前端 未结 5 1726
谎友^
谎友^ 2020-12-05 11:23

I\'ve built a Django form that submits to a page on another domain (that I don\'t control). The idea is that I have a nicely styled, neatly generated form that fits neatly i

5条回答
  •  既然无缘
    2020-12-05 11:33

    I've implemented a simple function which overwrites the widget render method and assigns a custom name:

    def namedWidget(input_name, widget=forms.CharField):
        if isinstance(widget, type):
            widget = widget()
    
        render = widget.render
    
        widget.render = lambda name, value, attrs=None: \
            render(input_name, value, attrs)
    
        return widget
    

    The usage is simple:

    class AliasCreationForm(forms.Form):
        merchant_id = forms.CharField(
            max_length=30,
            widget=namedWidget('PSPID', forms.HiddenInput),
        )
    

提交回复
热议问题