Я создаю простой django проект, который занимается хранением названий книг и авторов и хранением списка читаемых файлов (TBR). Таблица TBR связана с таблицей книг, как многие со многими.
Теперь, я запутался в том, как запросить список книг, которые находятся в определенном c TBR.
Код я написал следующее:
class BookManager(models.Manager):
def is_read(self):
return self.filter(read='y')
def is_not_read(self):
return self.filter(read='n')
class Genre(models.Model):
name = models.CharField(max_length=200, help_text='Enter a book genre (e.g. Science Fiction)')
def __str__(self):
return self.name
class Author(models.Model):
first_name = models.CharField(max_length=100, help_text="Enter first name of the author",default="Unknown")
last_name = models.CharField(max_length=100, help_text="Enter last name of the author",default="Unknown")
def __str__(self):
return f'{self.first_name} {self.last_name}'
class Book(models.Model):
YES = 'y'
NO = 'n'
DID_READ_CHOICES = [
(YES,'Yes'),
(NO,'No'),
]
title = models.CharField(max_length=100)
author = models.ForeignKey(
Author,
on_delete=models.SET_NULL,
null=True,
related_name='author_books'
)
genre = models.ManyToManyField(Genre, help_text='Select a genre for this book')
summary = models.TextField(max_length=1000, help_text='Enter a brief description of the book',blank=True,null=True)
read = models.CharField(
max_length=1,
choices=DID_READ_CHOICES,
default=NO,
)
objects = BookManager()
class Meta:
ordering = ['title']
def __str__(self):
return self.title
class TBR(models.Model):
title = models.CharField(max_length=100)
book = models.ManyToManyField(
Book,
related_name='in_tbr',
)
class Meta:
ordering = ['title']
def __str__(self):
return self.title
Я новичок в Django, и я ссылаюсь на документацию Django, любая помощь будет признательна.
Спасибо
Редактировать : я попробовал следующее:
>>> to_be_read = TBR.objects.get(title='TBR1')
>>> for book in to_be_read.book:
... book.title
...
Но получил следующую ошибку:
Traceback (последний последний вызов):
Файл "", строка 1, в
Ошибка типа: объект ManyRelatedManager не повторяется