我的模型:“车间”有一个相关项目,将时间和地点存储在“会话”对象中:
item=models.OneToOneField(Session)
会话将位置存储为位置的外键:
location = models.ForeignKey(conference_models.Location,
verbose_name=_("location"), blank=True, null=True)
我在模板中展示了一个 Workshop,我想链接到它的位置。如果模板是单个 Workshop 视图,这一切都有效,但如果我传递一个研讨会列表并将其全部包装在:
{% for w in workshops %}
然后坏事发生...
我在 urls.py 中有这个来定义位置视图的 URL:
url(r'^locations/(?P<location_pk>\d+)/$',
views.view_location, name='view-location'),
在研讨会模板中,我有:
<a href="{% url 'view-location' location_pk=w.item.location.pk %}">
{{w.item.location.pk}} {{w.item.location}}</a>
- {{w.item.start}} to {{w.item.end}}
我得到Reverse for 'view-location' with arguments '()' and keyword arguments '{'location_pk': ''}' not found.
location_pk
我的位置视图的参数在哪里。一切似乎都是正确的。例如,如果我这样做:
<a href="{% url 'view-location' location_pk=123546 %}">
{{w.item.location.pk}} {{w.item.location}}</a>
- {{w.item.start}} to {{w.item.end}}
我得到了包含 123546 的预期 URL。如果我做:
<a href="{% url 'view-location' location_pk=w.item.pk %}">
{{w.item.location.pk}} {{w.item.location}}</a>
- {{w.item.start}} to {{w.item.end}}
然后我在 URL 中获得项目主键(这不是我想要的,但证明了我不会因为期待它起作用而发疯......)。
在所有情况下,{{w.item.location.pk}}
标签都会扩展为正确的值。
我已经尝试将它包装在{% with %}
标签中,所以没有打点。没有喜悦。
这是 Django 1.4.5,是一个复杂项目的一部分,可能无法处理 1.5 的更新。如果这需要 1.5 来进行大修复,我将不得不重新考虑......
请注意,这似乎只发生在{% for %}
循环中......