Добавление динамических полей для визуализации только текста - PullRequest
0 голосов
/ 23 сентября 2018

Я создаю динамические поля в формах django путем переопределения init класса формы:

forms.py

class LearnerEventsLogForm(forms.Form):
    def __init__(self, *args, **kwargs):
        super(LearnerEventsLogForm, self).__init__(*args, **kwargs)
        self.fields["division"] = forms.ChoiceField(required=True ,choices=[])
        self.fields["division"].widget = forms.Select
        self.fields["lin"] = forms.CharField(required=True)
        self.fields["remarks"] = forms.CharField()
        self.fields["remarks"].widget = forms.Textarea

На мой взгляд:

class LearnerEventsLogCreate(FormView):
        model = LearnerEventsLog
        template_name = 'learners/learner_events_log.html'
        form_class=LearnerEventsLogForm
        success_url = reverse_lazy('learner_events_log_list')
    def form_valid(self, form):
            learner_events_log=form.save(commit=False)
            learner_events_log.log_id=self.request.user.id
            learner_events_log.ip=self.getRemoteIp(self.request)
            learner_events_log.save()
            return CreateView.form_valid(self, form)
   def form_invalid(self, form):
            return self.render_to_response(self.get_context_data(form=form))

В моем шаблоне:

{% extends 'base.html' %}{% load static %}
{% load widget_tweaks %}
<form id="learnerClassForm" method="post">
    {% csrf_token %}
{% for field in form.visible_fields %}
      <div class="form-group">
       <label for="{{ field.id_for_label }}">{{ field.label }}</label>
          {{ field | add_class:'form-control' }}
     </div>
{% endfor %}
<div class="form-group">
      <button type="submit" class="btn btn-success">
        <span class="glyphicon glyphicon-ok"></span> Save
      </button>
      <a href="{% url 'home' %}" class="btn btn-default">Cancel</a>
</div>
</form>

К моему удивлению все поля виджета имеют тип textinput .Есть ли объяснение этому поведению?Пожалуйста, помогите я новичок в Джанго

...