Условия Django get_next_by_date не отображаются должным образом в шаблоне
У меня есть модель под названием "Manga". В этой модели у меня есть объект manytomanyfield под названием chapters с этой моделью.
class Chapter(models.Model):
chapter=models.IntegerField()
manga=models.ForeignKey(Manga, null=True, on_delete=models.CASCADE)
images=models.ManyToManyField(Image, blank=True)
date= models.DateTimeField()
def __str__(self):
return f"{self.manga} Chapter {self.chapter}"
class Meta:
ordering = ('-date',)
Я получаю главу в представлении с
def chapterview(request, manga_id, chapter_id):
manga=Manga.objects.get(id=manga_id)
chapter=Chapter.objects.filter(manga=manga).get(id=chapter_id)
pages=chapter.images.all()
А следующая и предыдущая главы с:
try:
nextchapter=chapter.get_next_by_date
except Chapter.DoesNotExist:
nextchapter=None
try:
prevchapter=chapter.get_previous_by_date
except Chapter.DoesNotExist:
prevchapter=None
Проблема в том, что эти условия шаблона не работают должным образом:
{% if nextchapter and not prevchapter %},
{% elif nextchapter and prevchapter %},
{% else %}
Работает только {% elif nextchapter и prevchapter %}. И поскольку эти условия нужны для того, чтобы кнопки next/previous отображались, я получаю ошибку, потому что следующей главы не существует, но есть кнопка перехода на эту страницу, которую я предварительно нажимаю. Я хочу избавиться от метода get_next_by_date и просто получить следующую главу manytomanyfield. Как я могу этого добиться?
Вам нужно вызвать методы, так:
try:
nextchapter = chapter.get_next_by_date()
except Chapter.DoesNotExist:
nextchapter = None
try:
prevchapter = chapter.get_previous_by_date()
except Chapter.DoesNotExist:
prevchapter = None