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.

Reply via email to