Django - Доступ к _set со страницы изменения администратора - PullRequest
0 голосов
/ 08 ноября 2011

Давайте возьмем стандартный пример

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?

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

Проверьте документы на реверсивных URL-адресах администратора .

Вы должны заменить «myapp» на ваше реальное приложение:

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

Так что, если ваше приложение названо библиотекой, а имя вашей модели - book, ссылка будет:

<a href="{% url admin:library_book_change book.id %}">Edit {{ book }}</a>
1 голос
/ 08 ноября 2011

book_set на самом деле хорошо работает в вашем примере, потому что исключение возникает изнутри for петля. Кажется, проблема в имени представления.

Попробуйте это:

{% url admin:myapp_book_change book.id %}
...