繁体   English   中英

Django:外键查询

[英]Django: Foreignkey query

我有models.py如下:

class Article(models.Model):
    board = models.ForeignKey(Board)
    subject = models.CharField("과목명", max_length=10)
    ...

class Question(models.Model):
    user = models.ForeignKey(User)
    article = models.ForeignKey(Article)
    professor = models.CharField("출제교수", max_length=4)
    ...

Views.py:

def get_q_table(request):
    context = {
        "q_list" : Question.objects.all().order_by("number")
    }
    return render(request, "q_table.html", context)

我想以某种方式将相关实例传递给q_table.html,但找不到实现此目的的方法。 我应该是下面的样子(当然,这不太正确。我一直在查找外键查询的文档,但我找不到出路':

def get_q_table(request):
context = {
    "q_list" : Question.objects.all().order_by("number")
    "article" : Question.objects.all().related_board
}
return render(request, "q_table.html", context)

如果我想出办法,那么以下模板应该可以工作:

<div class="container">
    <div class="page-header"><h3>{{article.subject}} : {{article.year}}년 {{article.semester}}학기 {{article.quarter}}Q</h3></div>
    <div>
        <ul class="list-group" id="visitorbook">
        {% for question in questions %}
            <li class="list-group-item">{{question.number}} : {{ question.question }} - {{ question.answer }}
            </li>
        {% endfor %}
        </ul>
    </div>
</div>

在模板中,它应该是:

{% for question in q_list %}

您已经获取了aricle对象;

articles = Article.objects.all()

{% for article in  articles %}
<div class="container">
     <div class="page-header"><h3>{{article.subject}} : {{article.year}}년 {{article.semester}}학기 {{article.quarter}}Q</h3></div>
     <div>
    <ul class="list-group" id="visitorbook">
     {% for question in article.question_set.all %}
        <li class="list-group-item">{{question.number}} : {{question.question }} - {{ question.answer }}
        </li>
      {% endfor %}
      </ul>
   </div>
</div>
{% endfor %}

如果您只想获取一篇文章,那么;

articles = Article.objects.get(id=id)`


<div class="container">
     <div class="page-header"><h3>{{article.subject}} : {{article.year}}년 {{article.semester}}학기 {{article.quarter}}Q</h3></div>
     <div>
    <ul class="list-group" id="visitorbook">
     {% for question in article.question_set.all %}
        <li class="list-group-item">{{question.number}} : {{question.question }} - {{ question.answer }}
        </li>
      {% endfor %}
      </ul>
   </div>
</div>

我想,您想明确选择文章,然后选择所有相关问题。

尝试这个:

article = Article.objects.get(id)
questions = article.question_set.all()
context = {
    "article" : article
    "questions" : questions
}

有关使用相关对象的一般信息: https : //docs.djangoproject.com/en/1.8/topics/db/queries/#related-objects

订购时: https : //docs.djangoproject.com/en/1.8/ref/models/options/#ordering

如果所有问题的文章都相同,则可以尝试如下操作:

{% with article=questions.0.article %}

<div class="container">
    <div class="page-header"><h3>{{article.subject}} : {{article.year}}년 {{article.semester}}학기 {{article.quarter}}Q</h3></div>
    <!-- other stuff -->
</div>

{% endwith %}

尽管您也应该以最适合您的情况处理问题列表为空的情况。 另请注意,您无需在上下文中添加“文章”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM