【问题标题】:Django - Accessing _set from Admin change pageDjango - 从管理员更改页面访问 _set
【发布时间】:2011-12-24 11:47:16
【问题描述】:

举个标准例子

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:“myapp_manager_change”的反向参数“(1L,)”和关键字参数“{}”未找到。

为什么?
我怎样才能访问这个book_set

【问题讨论】:

    标签: django django-models django-templates


    【解决方案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>
    

    【讨论】:

    • 谢谢,很明显,我在不知不觉中尝试使用URL reversing system
    【解决方案2】:

    book_set 实际上在您的示例中运行良好,因为异常是从内部引发的 for 循环。看来问题出在视图名称上。

    试试这个:

    {% url admin:myapp_book_change book.id %}
    

    【讨论】:

    • 谢谢我把myapp改成my_actual_appmanager改成my_actual_model :)