【问题标题】:multiple nested foreign key relations in djangodjango中的多个嵌套外键关系
【发布时间】: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 表)......现在再次填充它之后,我意识到我的代码确实有效......位一个错误;-)

标签: python django


【解决方案1】:

实际上按设计工作...问题在于(缺少)数据库内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-03
    • 2012-06-23
    • 2018-08-28
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 2010-12-31
    相关资源
    最近更新 更多