#django #django-models #django-templates
#django #django-модели #django-шаблоны
Вопрос:
Давайте рассмотрим стандартный пример
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>
Я получаю
При рендеринге не обнаружено никакого соответствия: обратный для ‘myapp_manager_change’ с аргументами ‘(1L,)’ и аргументами ключевого слова ‘{}’ не найден.
Почему?
И как я могу получить к этому доступ book_set
?
Ответ №1:
Проверьте документы по изменению URL-адресов администратора.
Вы должны заменить «myapp» своим реальным приложением:
admin:{{ app_label }}_{{ model_name }}_change object_id
Итак, если ваше приложение называется library, а название вашей модели — book, ссылка будет:
<a href="{% url admin:library_book_change book.id %}">Edit {{ book }}</a>
Комментарии:
1. Спасибо, это настолько очевидно, что я пытался использовать
URL reversing system
, не зная.
Ответ №2:
book_set на самом деле хорошо работает в вашем примере, потому что исключение возникает изнутри for
цикла. Похоже, проблема связана с именем представления.
Попробуйте это:
{% url admin:myapp_book_change book.id %}
Комментарии:
1. Спасибо, я изменил
myapp
на my_actual_app иmanager
на my_actual_model 🙂