У меня есть цикл, в котором я прохожу по экземплярам книг из БД
В каждой итерации вывожу информацию о экземпляре. В зависимость от значения поля status информация должна отличаться. Например, если значение поля status равно значение "На складе", то должен появляться текст с ссылкой, но этого не происходит.
Почти уверен, что проблема в типе данных, которые забираю из БД, то есть я не правильно описываю условие, но не понимаю, что именно я делаю не так.
HTML файл:
{% for copy in book.bookinstance_set.all %}
<hr><p class="{% if copy.status == 1 %} text-success
{% elif copy.status == 2 %} text-danger
{% else %} text-warning
{% endif %}"> {{ copy.get_status_display }}</p>
<p><strong>Издательство:</strong> {{ copy.imprint }}</p>
<p class="text-muted"><strong>Инвентарный номер:</strong> {{ copy.id }}</p>
<p><strong>Статус экземпляра книги в БД:</strong> {{ copy.status }}</p>
<p>
{% if copy.status == 'На складе' %}
<a href="">Заказать</a>
{% endif %}
</p>
{% endfor %}
Файл models.py:
class Book(models.Model):
title = models.CharField(max_length=200,
help_text='Введите наазвание книги',
verbose_name='Название книги')
genre = models.ForeignKey('Genre',
on_delete=models.CASCADE,
help_text='Введите жанр для книги',
verbose_name='Жанр книги',
null=True)
language = models.ForeignKey('Language',
on_delete=models.CASCADE,
help_text='Введите язык книги',
verbose_name='Язык книги',
null=True)
author = models.ManyToManyField('Author',
help_text='Выберете автора книги',
verbose_name='Автор книги')
summary = models.TextField(max_length=1000,
help_text='Введите краткое описание книги',
verbose_name='Аннотация книги')
isbn = models.CharField(max_length=13,
help_text='Должно содержать 13 символов',
verbose_name='ISB книги')
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('book-detail', args=[str(self.id)])
def display_author(self):
return ', '.join([author.last_name for author in self.author.all()])
display_author.short_description = 'Авторы'
class Status(models.Model):
name = models.CharField(max_length=20,
help_text='Введите статус экемпляра книги',
verbose_name='Статус экземпляра книги')
def __str__(self):
return self.name
class BookInstance(models.Model):
book = models.ForeignKey('Book',
on_delete=models.CASCADE,
null=True,
verbose_name='Название книги')
inv_nom = models.CharField(max_length=20,
null=True,
help_text='Введите инвентарный номер экземпляра',
verbose_name='Инвентарный номер')
imprint = models.CharField(max_length=200,
help_text='Введите издательство и год выпуска',
verbose_name='Издательство')
status = models.ForeignKey('Status',
on_delete=models.CASCADE,
null=True,
help_text='Изменить состояние экземпляра',
verbose_name='Статус экземпляра книги')
due_back = models.DateField(null=True,
blank=True,
help_text='Введите конец срока статуса',
verbose_name='Дата окночания статуса')
borrower = models.ForeignKey(User,
on_delete=models.SET_NULL,
null=True,
blank=True,
verbose_name='Заказчик',
help_text='Выберете заказчика книги')
@property
def is_overdue(self):
if self.due_back and date.today() > self.due_back:
return True
return False
def __str__(self):
return '%s %s %s' % (self.inv_nom, self.book, self.status)