Как выборочно отметить книги, прочитанные пользователем во фронтенде, если у меня есть общая база данных книг и база данных конкретных прочитанных книг?
У меня есть модель "Книги" в django, которая хранит такую информацию, как название, автор и т.д. (здесь не имеет значения, просто упоминается для некоторого контекста). Я отображаю всю эту информацию с помощью Paginator и каждый пользователь имеет возможность отметить книги, которые он/она прочитал/а. Чтобы отметить их, я думаю создать другую модель под названием "BookStatus", в которую я вставляю новые записи каждый раз, когда пользователь читает книгу. Я также подумал об этом, потому что хочу хранить дополнительную информацию, например, время, когда книга была прочитана, и как долго пользователь читал ее. Однако я не могу понять, как на самом деле отобразить, что пользователь прочитал определенную книгу рядом с ее названием во фронтенде. Каков был бы самый простой способ сделать это?
Короче говоря, у меня есть база данных книг, которые являются общими для всех пользователей. Для каждого пользователя я хочу хранить книги, которые он/она прочитал/а, вместе с временем, когда он/она прочитал/а и сколько времени это заняло (все вводится пользователем), и при отображении этих общих книг я хочу иметь возможность отмечать их как прочитанные/непрочитанные на фронтенде.
Думаю, вы на правильном пути. Вот пример того, что вы можете сделать:
class BookStatus(models.Model):
book = models.ForeignKey(Book, on_delete=models.CASCADE, related_name='book')
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user')
read = models.BooleanField(default=False)
duration = models.DurationField(blank=True, null=True)
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
def __str__(self):
return f"{self.user.username} is reading {self.book.name}"