<p>我已经和django一起工作了一段时间,我花了很长时间才弄清楚表的连接,但是我想我终于理解了,我想把这个传递给其他人,这样他们就可以避免我对它的失望。</p>
<p>请考虑以下model.py:</p>
<pre><code>class EventsMeetinglocation(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=100)
address = models.CharField(max_length=200)
class Meta:
managed = True
db_table = 'events_meetinglocation'
class EventsBoardmeeting(models.Model):
id = models.IntegerField(primary_key=True)
date = models.DateTimeField()
agenda_id = models.IntegerField(blank=True, null=True)
location_id = models.ForeignKey(EventsMeetinglocation)
minutes_id = models.IntegerField(blank=True, null=True)
class Meta:
managed = True
db_table = 'events_boardmeeting'
</code></pre>
<p>这里我们可以看到EventsBoardmeeting中的location\u id是EventsMeetinglocation中id的外键。这意味着我们应该能够通过EventsBoardmeeting查询EventsMeetinglocation中的信息。</p>
<p>现在考虑以下views.py:</p>
<pre><code>def meetings(request):
meetingData = EventsBoardmeeting.objects.all()
return render(request, 'board/meetings.html', {'data': meetingData })
</code></pre>
<p>正如5月份其他帖子中多次提到的,django会自动处理连接。当我们在EventsBoardmeeting中查询所有内容时,我们也可以通过外键获得任何相关信息,但是在html中访问这些信息的方式有点不同。我们必须遍历用作外键的变量,才能访问与该联接关联的信息。例如:</p>
<pre><code>{% for x in data %}
{{ x.location_id.name }}
{% endfor %}
</code></pre>
<p>上面引用了表中的所有名称,这些名称是外键联接的结果。x本质上是EventsBoardmeeting表,所以当我们访问x.location_id时,我们访问的是外键,它使我们能够访问EventsMeetinglocation中的信息。</p>