I think what I was looking for was inlineformsets. Easy enough i suppose. We'll see. Anyone interested, see here: http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#inline-formsets
On Jun 16, 8:35 pm, Erich <efic...@gmail.com> wrote: > First time poster, so go easy on me... > > I need to create a form that will display a heading / description that > comes from one model (DReq) which I can get to display in a for loop. > Each dreq.desc is dependent on the results of a var that gets set and > read in from the user's session. Then I need to add a couple form > fields (from Saq) to each one that will relate to dreq.req_number > (also displayed alongside the desc) so that I can save the user's > input to the db (the DReq and MSaq are related as a MTM through > another model Saq). > > The best way I can figure out how to do this is to use some sort of > for loop that will display each item and the respective form fields. I > have gotten that far by going the template route (see below). My > problem is that I do not know how to relate them to each other. Below > is some of what I have come up with. If all else fails I will just > create four (there are only four possible configurations for the form, > but it seems like this would be more elegant in a loop, somehow > relating them) individual forms to handle the task. > > Here is what I have come up with so far (I know this together doesn't > work, it is just what I have tried in the various MTV places): > > forms.py: > > class MSForm(forms.Form): > answer = forms.Charfield(widget=forms.NullBooleanSelect) > note = forms.Charfield(widget=forms.TextArea) > # Perhaps use a ModelForm? > # class Meta: > # model = DReq > # fields = [ > # 'answer', > # 'note', > # ] > > views.py > > @login_required > def saq(request): > current_saq = request.session.get('current_saq') > question = DReq.objects.filter(s_types=current_saq) > > # Probably not the right place for the loop, but i was trying > something different > for dreq in question: > if question.headline: > req_headline = question.headline > req_number = dreq.req_num > if dreq.needs_answer: > saq_form = MSForm() > > if request.method == 'POST': > saq_form = MSForm(request.POST) > > if saq_form.is_valid(): > # Query that pulls the requirement and assigns the correct > answer to it. > ... > > template.html -- This will display the form with the proper > information (from a different views.py version), but the form inputs > and the desc/reqs are not related in any way. Closest I've come except > it obviously doesn't work. > > ... > <form action="" method="post">{% csrf_token %} > > <ul> > {% for dreq in question %} > {% if dreq.headline %} > <li>{{ dreq.headline }}</li> > {% endif %} > <li>{{ dreq.req_num }}: {{ dreq.desc}}</li> > {% if dreq.needs_answer %} > <div class="field">{{ saq_form.answer }} > {{ saq_form.note }}</div> > {% endif %} > {% endfor %} > </ul> > > <input type="submit" value="Submit"> > </form> > ... > > models.py > ... > # This is where the desc text comes from > class DReq(models.Model): > req_num = models.CharField(max_length=5, blank=False) > headline = models.CharField(max_length=200, blank=True) > description = models.CharField(max_length=400, blank=False) > needs_answer = models.BooleanField(blank=False) > s_types = models.ManyToManyField(SType) > > class MSaq(models.Model): > complete = models.BooleanField(blank=True) > d_req = models.ManyToManyField(DReq, through='Saq') > > # This is where the data needs to be stored and related to > class Saq(models.Model): > d_req = models.ForeignKey(DReq) > m_saq = models.ForeignKey(MSaq) > answer = models.NullBooleanField(blank=False) > note = models.CharField(max_length=200, blank=True) > ... > > I have redacted some of the names to protect the innocent, I hope it > is still easy to follow. I feel like I am missing something very > basic, but I just can't wrap my head around what. > > So, I just need to link the descriptions (which get iterated and > displayed just fine) to the form fields that get displayed with them, > so I can write the responses to the db. I hope this isn't info > overkill. > > Thanks in advance. > > Erich -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.