Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django字典中迭代外键?_Python_Django - Fatal编程技术网

Python 如何在Django字典中迭代外键?

Python 如何在Django字典中迭代外键?,python,django,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): conte

我对编程相当陌生,对在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
因此,我不必对传感器对象中的每个字段使用if/else或try/except。

否,foreignkey提供一对多关系。 在您的模型中,给定的站点最多只能有一个传感器。没有什么可重复的,所以你所问的没有意义

无需专门迭代所有传感器字段来访问模板中的传感器,如果将页面站点传递到模板中,例如作为当前_站点,则可以访问传感器,如下所示:

{{ current_site.sensor }}
要访问传感器字段,例如,如果传感器有一个名为value的字段,只需附加该字段,如下所示:

{{ current_site.sensor.value }}

是否可以从与站点对象关联的传感器对象创建另一个字典,并对其进行迭代?@Murphysboro您不需要这样做,除非我遗漏了什么,只需使用点符号访问传感器本身的部分。我想检查传感器中的每个字段,看看它们是否包含一个值,就像我在上面的示例中使用站点字段一样。点符号很酷,尽管我不知道我可以这样做。没有问题,如果这有助于你自由投票或接受,让未来的访问者知道你找到了问题的答案。可能的副本
{{ current_site.sensor.value }}