我对编程很陌生,并且对我的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传感器对象中的每个字段。
答案 0 :(得分:0)
ForeignKeys
提供一对多的关系。在您的模型中,给定的Site
只有最多只有一个传感器。没有什么可以迭代的,所以你问的是没有意义的。
如果您将页面sensor
传递到模板中,则无需专门遍历所有site
字段以在模板中访问它们,例如current_site
你可以这样访问传感器:
{{ current_site.sensor }}
要访问传感器字段,(例如,如果传感器有一个名为“value”的字段),只需附加该字段,如下所示:
{{ current_site.sensor.value }}