Advertisement
Guest User

Untitled

a guest
Aug 28th, 2020
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.67 KB | None | 0 0
  1. models.py
  2. class Books(models.Model):
  3. title = models.CharField("Название", max_length=100)
  4. ...
  5. url = models.SlugField(max_length=130, unique=True)
  6. def get_absolute_url(self):
  7. return reverse("books_index", kwargs={"slug":self.url})
  8.  
  9.  
  10.  
  11. class Add_chapter(models.Model):
  12. chapter_name = models.ForeignKey(
  13. Manga, verbose_name="Книги", on_delete=models.SET_NULL, null=True, max_length=100, default=""
  14. )
  15. chapter = models.PositiveSmallIntegerField("Глава", default="0")
  16. url = models.SlugField(max_length=130, default="")
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23. Views.py
  24. class Get_list(View): - индекс, вывожу все книги и ссылки на переход по ним для детального просмотра.
  25. def get(self, request):
  26. book = Books.objects.all()
  27.  
  28. return render(request, "books/index.html", {"book_list": book})
  29.  
  30.  
  31.  
  32. class ArticleDetailView(DetailView): - детальный просмотр карточки книги, здесь же вывожу ссылки на переход на страницу с детальной инфой глава.
  33. model = Books
  34. template_name = "booksHTML/article_detail.html"
  35. slug_field = "url"
  36. def get_context_data(self,**kwargs):
  37. context = super(ArticleDetailView, self).get_context_data(**kwargs)
  38. context["books_chapter"] = Add_chapter.objects.all() - сет модели Add_chapter, где лежат главы привязанные многие к одному с Books
  39. return context
  40.  
  41.  
  42.  
  43. class ChapterDetailView(DetailView): - отображение детальной страницы Глава
  44. template_name = "booksHTML/chapter_view.html"
  45. model = Add_chapter
  46. slug_field = "url"
  47.  
  48.  
  49. urls.py
  50.  
  51. extra_patterns = [
  52.  
  53. path("", views.ArticleDetailView.as_view(), name='books_index'),
  54. path("<slug:slug>/", views.ChapterDetailView.as_view())
  55. ]
  56.  
  57.  
  58. urlpatterns = [
  59.  
  60. path("", views.Get_list.as_view()),
  61. path('<slug:slug>/', include(extra_patterns)),
  62.  
  63.  
  64. ]
  65.  
  66.  
  67. article_detail.html
  68.  
  69. здесь хочу вывести ссылки именно связанных глав с книгой. так и получается. Но, напимер, есть книга1 и у нее есть глава 1 с юрл1 и тоже самое у книги2, у нее есть глава1 с юрл1, то при переходе в первую главу по ссылке появляется ошибка "get() returned more than one Add_chapter -- it returned 2!"
  70. {% for m in object.add_chapter_set.all %}
  71.  
  72. <a href="{{ m.url }}">{{ m.url }}</a>
  73. {% endfor %}
  74.  
  75.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement