Search code examples
pythondjangomany-to-many

recover the questions related to responses retrieve to ManyToMany


First my model contains questions and answers pages to manage issues.

My models.py

class Question(models.Model):
    label = models.CharField(max_length=30)

    def __str__(self):
            return self.label


class Page(models.Model):
    title = models.CharField(max_length=30)

    def __str__(self):
        return self.title

class Reply(models.Model):
    page = models.ManyToManyField(Page)
    question = models.ForeignKey(Question)
    user = models.ForeignKey(Personne)
    answer = models.CharField(max_length=30)
    creationDate = models.DateTimeField(default=datetime.now())

    def __str__(self):
        return str(self.answer)

So I managed to retrieve the answers for each page One page is equal to: 1 visit another: Visit 2 etc ... (i go share a screenshot)

I managed to retrieve the answers for each pages but I fail to see the questions corresponding to each response for a page!

This is my views.py

def reply(request):
    replies = Reply.objects.all()
    questions = Question.objects.all()
    logged_user = get_logged_user_from_request(request)
    pages = Page.objects.all()
    form = ReplyForm(request.GET)
    personnes = Personne.objects.all()
    if logged_user:
        if len(request.GET) > 0:
            form = ReplyForm(request.GET)
            if form.is_valid():
                form.save(commit=True)
                return HttpResponseRedirect('/reply')
            else:
                return render_to_response('polls/reply.html', {'personnes': personnes, 'replies': replies, 'questions': questions,'pages':pages, 'form': form})
        else:
            form = ReplyForm()
            return render_to_response('polls/reply.html', {'personnes':personnes, 'replies': replies, 'questions': questions, 'pages':pages, 'form': form})
    else:
        return HttpResponseRedirect('/login')

and for finish this is my template reply.html

{% for reply in replies %}<br>
    <br>{{ reply.user }}
    {{ reply.question }} -
    {{ reply.answer }}
    (dans la :{% for page in reply.page.all %} {{ page }}) {% endfor %}
{% endfor %}
<hr>
{% for page in pages %}<hr>
    {{ page }}: 

    <br>{{ page.reply.question_set all }} : {{ page.reply_set.all }}

{% endfor %}

How is it possible to retrieve the issues here? I manage to recover the questions for every answer but not for every visit

a screen shot

The questions will not be displayed for each response in each visit

What is the call in the template to do this? or then add a line in views.py ?

** Edit :**

edit : add a screen shot of the result right now

template :

{% for reply in replies %}<br>
    <br>{{ reply.user }}
    {{ reply.question }} -
    {{ reply.answer }}
    (dans la :{% for page in reply.page.all %} {{ page }}) {% endfor %}
{% endfor %}
<hr>
{% for page in pages %}<hr>
    {{ page }}: 

    <br>{% for reply in  page.reply_set.all %}<br> {{ reply.question }} (Author : {{ reply.user }}) {% endfor %}

{% endfor %}

edit screen shot


Solution

  • {% for reply in replies %}<br>
        <br>{{ reply.user }}
        {{ reply.question }} -
        {{ reply.answer }}
        (dans la :{% for page in reply.page.all %} {{ page }}) {% endfor %}
    {% endfor %}
    <hr>
    {% for page in pages %}<hr>
        {{ page }}: 
    
        <br>{% for each_reply in  page.reply_set.all }}{{each_reply.question}}{% endfor %} : {{ page.reply_set.all }}
    
    {% endfor %}