I am trying to generate a form dynamically and want to assign indentation of form fields. I am trying to assign an custom attribute offset to forms.CharField in subclass. I plan to use this logic to create a form dynamically from an xml file, where the fields would be indented based on the depth of the node.
I am unable to retrieve the value of offset while rendering the template and hence unable to assign the margin-left style parameter. The final html output is also shown. My forms.py file : class MyCharField(forms.CharField): def __init__(self, *args, **kwargs): self.offset = kwargs.pop('offset', 0) super(MyCharField, self).__init__(*args, **kwargs) class MyDynamicForm(forms.Form): def __init__(self, *args, **kwargs): super(MyDynamicForm, self).__init__(*args, **kwargs) self.fields["Field_A"] = MyCharField(label="Input A", offset="5" ) self.fields["Offset_Field_B"] = MyCharField(label="Input B", offset="50") My Views.py looks like this: class MyDynamicView(View): template_name = 'demo/myform.html' form_class = MyDynamicForm def get(self, request, *args, **kwargs): form = self.form_class() return render(request, self.template_name, {'form': form}) My template file using bootstrap looks like this: {% extends 'demo/base.html' %} {% load bootstrap3 %} {% block content %} <form role="form" method="post"> {% csrf_token %} {% for field in form %} <div class="form-group bootstrap3-required"> <label class="col-md-3 control-label " style = "margin-left: {{field.offset}}px" for="{{ field.name }}">{{ field.label}}</label> <div class="col-md-9"> <input class="form-control" id="id_{{field.name}}" name="{{ field.name }}" placeholder="{{field.label}}" style= "margin-left:{{field.offset}}px" title="" required="" type="text"/> </div> </div> {% endfor %} {% buttons submit='OK' reset='Cancel' layout='horizontal' %}{% endbuttons %} </form> {% endblock %} The html output is: <form role="form" method="post"> <input type='hidden' name='csrfmiddlewaretoken' value='lTy0rc2r9KNiNNPosUoriUlNzYBpgoVpael1MYLOczFECO7H7LXdES6EGBhUoXx0' /> <div class="form-group bootstrap3-required"> <label class="col-md-3 control-label " style = "margin-left: px" for="Field_A">Input A</label> <div class="col-md-9"> <input class="form-control" id="id_Field_A" name="Field_A" placeholder="Input A" style="margin-left:px" title="" required="" type="text"/> </div> </div> <div class="form-group bootstrap3-required"> <label class="col-md-3 control-label " style = "margin-left: px" for="Offset_Field_B">Input B</label> <div class="col-md-9"> <input class="form-control" id="id_Offset_Field_B" name="Offset_Field_B" placeholder="Input B" style="margin-left:px" title="" required="" type="text"/> </div> </div> <div class="form-group"><label class="col-md-3 control-label"> </label><div class="col-md-9"><button class="btn btn-default" type="submit">OK</button> <button class="btn btn-default" type="reset">Cancel</button></div></div> </form> -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/9ca3642f-c606-403b-80e3-113ebd8d686e%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.