Django - 从管理员更改页面访问_set

时间:2011-11-08 13:58:42

标签: django django-models django-templates

让我们采取标准的例子

class Author(models.Model):
  name = models.CharField(max_length=100)

class Book(models.Model):
  title = models.CharField(max_length=100)
  author = models.ForeignKey(Author)
  #... Many other fields ...

从试图访问相关图书的Author的管理员更改模板

<ul>
  {% for book in original.book_set.all %}
    <li>
      <a href="{% url admin:myapp_manager_change book.id %}">Edit {{ book }}</a>
    </li>
  {% endfor %}
</ul>

我得到了

  

渲染时捕获NoReverseMatch:反转&#39; myapp_manager_change&#39;参数&#39;(1L,)&#39;和关键字参数&#39; {}&#39;没找到。

为什么?
我如何访问此book_set

2 个答案:

答案 0 :(得分:1)

book_set在你的例子中实际上运行良好,因为异常是从内部引发的 for循环。似乎问题在于视图名称。

试试这个:

{% url admin:myapp_book_change book.id %}

答案 1 :(得分:1)

检查reversing admin urls上的文档。

您必须将“myapp”替换为您的实际应用:

admin:{{ app_label }}_{{ model_name }}_change object_id

因此,如果您的应用程序名为library且您的模型名称为book,则链接将为:

<a href="{% url admin:library_book_change book.id %}">Edit {{ book }}</a>