2017-11-19 5 views
0

私は2つのモデルに外来キーを関連づけていますが、プリガンタは特定のComentario(コメント)への質問です。2つのオブジェクトリストを関連付ける方法は?

models.py

class Comentario (models.Model): 
    titulo = models.CharField(max_length=50) 
    texto = models.CharField(max_length=200) 
    autor = models.ForeignKey (Perfil, null=True, blank=True, on_delete=models.CASCADE) 
    fecha_publicacion = models.DateTimeField(auto_now_add=True) 
    tag = models.ManyToManyField(Tags, blank=True) 

    def __str__(self): 
     return (self.titulo) 

class Pregunta (models.Model): 
    descripcion = models.CharField(max_length=150) 
    autor = models.ForeignKey (Perfil, null=True, blank=True, on_delete=models.CASCADE) 
    fecha_pregunta = models.DateTimeField(auto_now_add=True) 
    comentario_preguntado = models.ForeignKey(Comentario, null=True, blank=True) 

    def __str__(self): 
     return (self.descripcion) 

私は疑問や質問自体を持っコメントだけを表示するビューを作成します。私は2つのオブジェクトリストを作成します.1つはコメントともう1つは質問です。問題は、テンプレートに最初のコメントとその質問、次に次のコメントとその質問を表示したいということです。 これをテンプレートで実行する必要があるのか​​、私のビューを変更する必要があるのか​​分かりません。

views.py

def responder(request): 
    comment = Comentario.objects.filter(id__in=Pregunta.objects.all().values_list('comentario_preguntado')).filter(autor=request.user) 
    question = Pregunta.objects.filter(comentario_preguntado__in=comment) 
    return render(request, 'home/responder.html', {'comment': comment, 'question': question}) 

答えて

0

ちょうど彼らForeignKey関係のrelated_name経由commentarioのpreguntasにアクセス:

def responder(request): 
    # use __isnull to filter for comments with existing preguntas 
    # use prefetch_related to minimize db hits 
    # use plural name to be semantically sound ;) 
    comments = Comentario.objects\ 
     .filter(pregunta_set__isnull=False, autor=request.user)\ 
     .prefetch_related('pregunta_set') 
    return render(request, 'home/responder.html', {'comments': comments}) 

、テンプレートで:related_name

{% for comment in comments %} 
    # display comment stuff 
    {% for pregunta in comment.pregunta_set.all %} 
     # display pregunta stuff 
    {% endfor %} 
{% endfor %} 

ドキュメント、 prefetch_relatedおよびisnull

+0

作品は素晴らしいです!本当にありがとう! – JohnWire

関連する問題