JQuery плагин динамической формы не допускает пустую форму - PullRequest
0 голосов
/ 29 июня 2019

Я использую djongo для интеграции MongoDB с Django. Я использовал два ArrayModelField внутри моей модели, которые внутренне используют Django formsets. Я использовал Динамический плагин Formset , который позволяет мне динамически добавлять больше элементов ArrayModelField, но я не могу отправить пустой элемент ArrayModelField, то есть никакой формы для данного набора форм. Как я могу добавить его?

Ниже мой код:

models.py

(источник и назначение - абстрактные модели с полями ip, port, database, user, password)

class LobDetail(models.Model):
    lob_name = models.CharField(max_length=64, primary_key=True)
    type = models.CharField(max_length=20)
    source = models.ArrayModelField(
        model_container = Source,
    )
    destination = models.ArrayModelField(
        model_container = Destination,
    )

    def __str__(self):
        return self.lob_name + " "+ self.type

views.py

(LobDetailForm - простая форма со всеми включенными полями)

def add_lobdetail(request):


    form = LobDetailForm

    if request.method == 'POST':
        print('Hey! I AM SUBMITTED')
        form = LobDetailForm(request.POST)

        if form.is_valid():
            form.save(commit = True)
            return index(request)
        else:
            print('Error Form Invalid')

    return render(request, 'lobconf/add_lobdetail.html', {'formset': form})

add_lobdetail.html

<script type="text/javascript">
    $(function() {
        $('.nestedform_one').formset({
            prefix: '{{ formset.source.form_set.prefix }}',
            formCssClass: 'dynamic-formset1',
            addText: 'Add another source',
            deleteText: 'Remove'
        });
        $('.nestedform_two').formset({
            prefix: '{{ formset.destination.form_set.prefix }}',
            formCssClass: 'dynamic-formset2',
            addText: 'Add another destination',
            deleteText: 'Remove'
        });
    })
</script>

<form method="POST">
<div class="jumbotron jumbotron-fluid">
<div class="container">
{% csrf_token %}
<!-- {{ form.management_form }} -->
<div class="form-group row">
  <label for="lobName" class="col-sm-2 col-form-label">Lob Name</label>
  <div class="col-sm-10">
    {{ formset.lob_name }}
  </div>
</div>
<div class="form-group row">
  <label for="typedb" class="col-sm-2 col-form-label">Type</label>
  <div class="col-sm-10">
    {{ formset.type }}
  </div>
</div>
<fieldset class="form-group border border-primary p-2">
  <legend class="mylegend col-form-label col-sm-2 w-auto">Source</legend>
  <div class="row">
    {{ formset.source.form_set.management_form}}
    <div class="col-sm-12 nestedform_one">
      {% for form in formset.source.form_set %}
        <div class="space"></div>
        <!-- {{ form.management_form }} -->
        {{ form.ip | placeholder:"IP Address"}}
        {{ form.port | placeholder:"Port Number"}}
        {{ form.database | placeholder:"Database"}}
        {{ form.user | placeholder:"Username"}}
        {{ form.password | placeholder:"Password"}}
      {% endfor %}


    </div>
  </div>
</fieldset>


<fieldset class="form-group border border-primary p-2">
  <legend class="mylegend col-form-label col-sm-2 w-auto">Destination</legend>
  <div class="row">
    {{ formset.destination.form_set.management_form}}
    <div class="col-sm-12 nestedform_two">
      {% for form in formset.destination.form_set %}
        <!-- {{ form.management_form }} -->
        {{ form.ip | placeholder:"IP Address"}}
        {{ form.port | placeholder:"Port Number"}}
        {{ form.database | placeholder:"Database"}}
        {{ form.user | placeholder:"Username"}}
        {{ form.password | placeholder:"Password"}}
      {% endfor %}


    </div>
  </div>
</fieldset>

<div class="form-group row">
  <div class="col-sm-10">
    <button type="submit" class="btn btn-primary">Add lob details</button>
  </div>
</div>
</form>

AddLobDetail расширяет файл base.html, в который добавлен плагин начальной загрузки, jquery и jquery для динамического набора форм.

Я новичок в Django и действительно борюсь с ним. Любая помощь приветствуется. Спасибо за ваше время и помощь.

...