Python 如何在Django字典中迭代外键?
我对编程相当陌生,对在Django视图文件中迭代外键有疑问 models.pyPython 如何在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
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 }}