如何迭代Django字典中的外键?

时间:2015-02-16 00:40:35

标签: python django

我对编程很陌生,并且对我的Django视图文件中的外键进行迭代有疑问。

models.py

class Site(models.Model):
    other fields.......
    sensor = models.ForeignKey("Sensor", blank=True, null=True)
    slug = models.SlugField(unique=True)

views.py

def site(request, site_name_slug):

    context_dict = {}

    empty_field = "<font color='LightGray'>No Data</font>"


    try:
        site = Site.objects.values().get(slug=site_name_slug)
        context_dict['site_slug'] = site_name_slug

        for key, value in site.iteritems():
            if value:
                context_dict[key] = value
            else:
                context_dict[key] = empty_field

是否可以添加这样的内容?

for key, value in (site.sensor).iteritems():
    if value:
        context_dict['sensor_%s' % key] = value
    else:
        context_dict['sensor_%s' % key] = value

因此,我不必使用if / else或try / except传感器对象中的每个字段。

1 个答案:

答案 0 :(得分:0)

不,ForeignKeys提供一对多的关系。

在您的模型中,给定的Site只有最多只有一个传感器。没有什么可以迭代的,所以你问的是没有意义的。


如果您将页面sensor传递到模板中,则无需专门遍历所有site字段以在模板中访问它们,例如current_site你可以这样访问传感器:

{{ current_site.sensor }}

要访问传感器字段,(例如,如果传感器有一个名为“value”的字段),只需附加该字段,如下所示:

{{ current_site.sensor.value }}