私のモデル:「ワークショップ」には、時間と場所を「セッション」オブジェクトに保存する関連アイテムがあります。
item=models.OneToOneField(Session)
セッションは、場所を場所への外部キーとして保存します。
location = models.ForeignKey(conference_models.Location,
verbose_name=_("location"), blank=True, null=True)
テンプレートでワークショップを表示していて、その場所にリンクしたいと考えています。テンプレートが単一のワークショップ ビューである場合、これはすべて機能しますが、ワークショップのリストを渡してこれをすべてラップすると、次のようになります。
{% for w in workshops %}
その後、悪いことが起こります...
ロケーションビューの URL を定義するために urls.py にこれがあります。
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 への更新を処理しない複雑なプロジェクトの一部です。これがbigfixに1.5が必要な場合は、再考する必要があります...
これは{% for %}
ループでのみ発生するように見えることに注意してください...