Hi all,
I am writing a tool that implements NIST security controls and having
trouble implementing inlineformset_factory, which I think is the solution
to this problem.
Background: I have two models, one is called 'Controls' and the other is
'Implementation'. When the user goes to a page, the views.py should query
several relevant controls as text (not as a Form) and then an
Implementation form immediately afterwards. This will be repeated depending
on the number of Controls are found.
So, lets suppose there are 20 controls, you should see a table with the
following:
{% for control in controlset %}
Control Name: "This is the control name 1" -- Presumably this comes from: {{
control.name.value }}
Control Description: "This is the control description 1" -- Presumably this
comes from: {{ control.description.value }}
Implementation Statement: [Input type=text name=1_implementation] -- Not
sure how to display this
Implementation Status: [Input type=text name=1_status] -- Not sure how to
display this
{% endfor %}
(This is pseudo-code, removed the HTML for visibility)
This frame should be repeated depending on the number of controls, it could
be 5, 20 or 100, then a submit button. When the user submits the data, I
want to capture this data into several 'Implementation' objects and save
them in the database.
My failing code currently does this:
ControlImplementationSet = inlineformset_factory(Controls, Implementation)
allControls = Controls.objects.get(pk=1)
controlset = ControlImplementationSet(instance=allControls)
Even though I want multiple forms, I used the Controls.objects.get(pk=1) to
specify a single control. When I send the variable controlset as a context
to be displayed as:
{{ controlset }}
I oddly get 3 forms that look like autogenerations of the Implementation
form with an extra "Delete" option. That makes no sense to me. I don't know
understand why this is displayed. I want to display the queried controls,
followed by an implementation form.
My questions are:
1. Why do I get 3 "Implementation" forms, instead of just 1, when I did
Controls.objects.get(pk=1), which should specify a single Control?
2. How do I display multiple Implementation Forms for each Control that
is returned?
3. How do I only display certain elements of the Implementation form,
not every field in the model as an HTML <input> field?
4. How do I have my views.py interpret the submitted Implementation form
data from the user?
And last but not least...is there a sample of this? Surely I am not the
first one who has done this, and the he documentation is not making sense
to me.
https://docs.djangoproject.com/en/1.7/topics/forms/modelforms/#inline-formsets
Please advise, this is day two, quite frustrated.
Thanks,
Farhan
--
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/89495462-3f99-4b9d-86bd-61db11126b94%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.