2014-01-24 53 views
2

我想获取一个对象,该对象遍历具有反向外键关系的2个模型。我已经能够获取第一个模型的对象(ipv4address),但无法通过反向外键获取链接到该对象的对象。 我对django相当陌生,所以我可能会接近这个错误开始。任何建议都更受欢迎。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 %} 
+0

我刚刚意识到,我没有再次填充我的数据库(特别是PeerStatus表)后调试时间和时间再次...现在再次填充后,我意识到我的代码实际上工作...一点点的失误; - ) – woei

回答

1

实际工作作为专...问题是在(缺乏)数据库内容中。