我可以在一个模型上使用{{variables}},但不能在另一个模型上使用?

时间:2016-12-09 10:48:30

标签: django django-templates

当我使用模板变量替换我的Project模型中的字段时,如{{project.title}}和{{project.featured_image}}。它就像一个魅力。 但是,如果我尝试在MapData模型{{mapdata.location}}的相同HTML模板中做类似的事情,它不会替换任何值,它只是空白。 这是为什么?我一直在浏览Django Docs中的模型和查询部分。是否需要其他技术,因为它是ForeignKey?很明显,我在这里遗漏了一些基本的东西,但我无法自己发现它是什么。 有人可以向我解释如何访问"那个MapData模型?我通过管理员添加了一些项目,在这个models.py的每个字段中都有正确的数据。 >>>来自projects.models导入* >>> MapData.objects.all() < QuerySet [< MapData:MapData对象>,< MapData:MapData对象>]> >>>来自projects.models导入* >>> Project.objects.all() < QuerySet [< Project:Some title 1>,< Project:Some title 2>]> 型号在哪里: 来自django.db导入模型 class Project(models.Model):     title = models.CharField(max_length = 200)     text = models.TextField()     date = models.DateField()     featured_image = models.ImageField(         upload_to =' projects / featured',默认= False)     def __str __(self):         返回self.title class ProjectImage(models.Model):     project = models.ForeignKey(Project,related_name =' images')     image = models.ImageField(upload_to =' projects') class MapData(models.Model):     project = models.ForeignKey(Project)     longitude = models.DecimalField(         max_digits = 10,decimal_places = 8,默认= False)     latitude = models.DecimalField(         max_digits = 10,decimal_places = 8,默认= False)     location = models.CharField(max_length = 200,blank = True) 这是测试HTML模板project_detail.html: <!DOCTYPE html> < HTML>   < HEAD>     < meta charset =" utf-8">     < title> Project {{project.title}}< / title>   < /头>   <身体GT;     < div class =" project_featured">         < img src =" {{MEDIA_URL}} / media / {{project.featured_image}}" alt =" {{project.title}}" />     < / DIV>     < div class =" project_content">         < h4> {{project.title}}< / h4>         < p> {{project.text | linebreaks}}< / p>         < h5> {{project.get_typology_display}}< / h5>         < h5>位置:{{mapdata.location}}< / h5>     < / DIV>   < /体> < / HTML>

1 个答案:

答案 0 :(得分:1)

我认为您正在尝试获取特定项目的地图数据,因此您需要遵循关系

{% for map_data in project.mapdata_set.all %}
{{ map_data.location }}
{% endfor %}

{{ }}变量标记引用当前上下文中的变量,mapdata不是。就其本身而言,您期望它与哪些数据相关?通过在与项目相关的所有地图数据上提供循环,您将迭代对象map_data添加到当前范围上下文中