This is most likely to crop up when you're passing a custom widget class, because classes are callable: Because django-dynamic-forms was already taken. All other arguments (with one special-cased exception detailed below) are passed along to the wrapped field when it is created. Please note that including a ForeignKey link from the model containing responses to the model containing forms isnt technically required; however, it is highly recommended and will make linking the two much easier. The last line is the most important. Save compiled form as JSON objects in model db and get its structure and contents with a simple model method call, Override form constructor in order to add static common fields, Create input fields using heritable classes, with customizable validation methods, Manage and verify digitally signed file fields (PDF and P7M) without a certification authority validation (TODO via third-party API). The model containing the ResponseField has a ForeignKey link to a model containing the FormField. Please note that JSON data can saved into the model field as a python dict or a valid JSON string. That is because the HttpResponse is returning success. Huge thanks to Kevin Chappell & Team for developing the awesome open source Form Builder UI! Public. Wrap any field that needs dynamic behaviour in a DynamicField. Download the file for your platform. We also have to add some functionality to book_form.html. A dynamic form doesn't always have a fixed number of fields and you don't know them when you build the form. Each recipient will render_form() formmethod POST , class BookInLineAdmin(admin.TabularInline): from django.forms.models import inlineformset_factory, min_num=2, # minimum number of forms that must be filled in, extra=1, # number of empty forms to display, can_delete=False # show a checkbox in each form to delete the row, from django.shortcuts import redirect, render, books = Book.objects.filter(author=author), formset = BookFormSet(request.POST or None), return redirect("create-book", pk=author.id), return render(request, "create_book.html", context), path(' {{ book.title }} - {{ book.number_of_pages }}Create books for {{ author.name }}
,