【发布时间】:2014-01-24 20:16:17
【问题描述】:
我正在尝试获取一个对象,该对象遍历具有反向外键关系的 2 个模型。我已经能够获取第一个模型的对象(ipv4address),但无法获取通过反向外键链接到该对象的对象。 我对 django 还很陌生,所以我可能一开始就犯了这个错误。欢迎提出任何建议。
我将所有对等对象传递给模板:
def view_ix(request, ix):
peers = Peer.objects.filter(exchange=ix).order_by('asn')
return render_to_response('view_ix.html', {
'peers': peers,
'exchange' : ix,
'exchanges' : exchanges.list(),
}, context_instance = RequestContext(request))
型号:
class Peer(models.Model):
exchange = models.CharField(max_length=50)
organisation = models.CharField(max_length=200)
contact = models.EmailField(max_length=254)
asn = models.IntegerField()
def __unicode__(self):
return unicode(self.asn) + '\t' + unicode(self.organisation)
class IPv4Address(models.Model):
peer = models.ForeignKey(Peer)
ip = models.GenericIPAddressField(protocol='IPv4')
def __unicode__(self):
return unicode(self.peer) + '\t' + unicode(self.ip)
class Router(models.Model):
name = models.CharField(max_length=50)
fqdn = models.CharField(max_length=50)
snmpport = models.IntegerField()
snmpcommunity = models.CharField(max_length=50)
def __unicode__(self):
return unicode(self.name)
class PeerStatus(models.Model):
router = models.ForeignKey(Router)
ipv4address = models.ForeignKey(IPv4Address)
state = models.IntegerField()
模板:
{% for peer in peers %}
{% for ipv4 in peer.ipv4address_set.all %}
ipv4: {{ ipv4.ip }}<br>
{% for state in ipv4.peerstatus_set.all %}
state: {{ state.state }}<br>
{% endfor %}
{% endfor %}
{% endfor %}
【问题讨论】:
-
我刚刚意识到在一次又一次调试之后我没有再次填充我的数据库(特别是 PeerStatus 表)......现在再次填充它之后,我意识到我的代码确实有效......位一个错误;-)