Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- models.py
- class Books(models.Model):
- title = models.CharField("Название", max_length=100)
- ...
- url = models.SlugField(max_length=130, unique=True)
- def get_absolute_url(self):
- return reverse("books_index", kwargs={"slug":self.url})
- class Add_chapter(models.Model):
- chapter_name = models.ForeignKey(
- Manga, verbose_name="Книги", on_delete=models.SET_NULL, null=True, max_length=100, default=""
- )
- chapter = models.PositiveSmallIntegerField("Глава", default="0")
- url = models.SlugField(max_length=130, default="")
- Views.py
- class Get_list(View): - индекс, вывожу все книги и ссылки на переход по ним для детального просмотра.
- def get(self, request):
- book = Books.objects.all()
- return render(request, "books/index.html", {"book_list": book})
- class ArticleDetailView(DetailView): - детальный просмотр карточки книги, здесь же вывожу ссылки на переход на страницу с детальной инфой глава.
- model = Books
- template_name = "booksHTML/article_detail.html"
- slug_field = "url"
- def get_context_data(self,**kwargs):
- context = super(ArticleDetailView, self).get_context_data(**kwargs)
- context["books_chapter"] = Add_chapter.objects.all() - сет модели Add_chapter, где лежат главы привязанные многие к одному с Books
- return context
- class ChapterDetailView(DetailView): - отображение детальной страницы Глава
- template_name = "booksHTML/chapter_view.html"
- model = Add_chapter
- slug_field = "url"
- urls.py
- extra_patterns = [
- path("", views.ArticleDetailView.as_view(), name='books_index'),
- path("<slug:slug>/", views.ChapterDetailView.as_view())
- ]
- urlpatterns = [
- path("", views.Get_list.as_view()),
- path('<slug:slug>/', include(extra_patterns)),
- ]
- article_detail.html
- здесь хочу вывести ссылки именно связанных глав с книгой. так и получается. Но, напимер, есть книга1 и у нее есть глава 1 с юрл1 и тоже самое у книги2, у нее есть глава1 с юрл1, то при переходе в первую главу по ссылке появляется ошибка "get() returned more than one Add_chapter -- it returned 2!"
- {% for m in object.add_chapter_set.all %}
- <a href="{{ m.url }}">{{ m.url }}</a>
- {% endfor %}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement