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.

Reply via email to