2017-11-24 2 views
1

Ich habe zwei Klasse Frage und Antwort in Modellen. Beide sind durch ForeignKey mit dem Benutzer verbunden. In einer Vorlage möchte ich alle Antworten des eingeloggten Benutzers ausdrucken. Was passiert einfach. Aber mein Problem ist Ich möchte Frage entsprechend der Antwort bekommen. Wie lautet die Abfrage, um die Frage zu bekommen? Modelle, Schablone und Ansichten below--Wie bekomme ich Qustion vom Antwortobjekt in Django?

class Question(models.Model): 
    title = models.CharField(max_length=200, blank=True, null=True) 
    description = models.TextField() 
    pub_date = models.DateTimeField() 
    user = models.ForeignKey(User, on_delete=models.CASCADE) 

    def __str__(self): 
     return self.title 

class Answer(models.Model): 
    answer_text = models.TextField() 
    questions = models.ForeignKey(Question, on_delete=models.CASCADE) 
    user = models.ForeignKey(User, on_delete=models.CASCADE) 
    pub_date = models.DateTimeField() 

    def __str__(self): 
     return self.answer_text 

Ansichten gegeben:

def answered_by_me(request, user_id): 
    user = User.objects.get(pk=user_id) 
    answers = user.answer_set.all() 
    questions = user.question_set.all() 
    context = {'answers': answers, 'questions': questions, 'user_id': user_id} 
    return render(request, template_name='ans/answered_by_me.html', context=context) 

Vorlage:

{% block body %} 
    {{ answers }} 
    {% if answers %} 
     <ul> 
      {% for answer in answers %} 

       <li> {{ answer }}</li> 

      {% endfor %} 
     </ul> 
    {% endif %} 

{% endblock %} 

Antwort

1

musste ich einfach

{% for answer in answers %} 

     <li> {{ answer.questions }}</li> 

    {% endfor %} 

weil Antwort mit Frage Tabelle mit Fremdschlüsselfragen verbunden ist. Also antworten. Fragen geben mir die entsprechende Frage.

1

Sie benötigen keine neue Abfrage benötigen, wenn Sie eine Frage übergeben möchten ID zu deiner Ansicht.

Statt die Antworten von looping, sollten Sie Schleife die Fragen:

{% for question in questions %} 
    <li>{{ question }}</li> 
    {% for answer in question.answer_set.all %} 
    <li> {{ answer }}</li> 
    {% endfor %} 
{% endfor %} 

Ich denke, das funktioniert.