Моделирование выглядит немного "выключенным".Вы сделали ForeignKey
в модели Author
, которая указывает на Book
(и этот внешний ключ называется author
).Таким образом, это означает, что согласно вашему моделированию.Author
записывает в точности один Book
, а Book
может быть записано нулем, одним или несколькими авторами.
Остальные ваши формы и представления также могут поменяться местами.два.Например, вы делаете BookAuthorCreateView
в качестве модели Book
, но вы, похоже, создаете Author
объекты здесь.Вероятно, это поможет, если вы в настоящее время не очень заботитесь об отношениях и попытаетесь реализовать формы для Book
и Author
по отдельности.
Скорее всего, вам нужно обратное отношение, как в случае Book
имеет автора.Вы можете написать это как:
class Author(models.Model):
description = models.CharField("Description", max_length=150)
# <i>no</i> author foreign key
class Meta:
verbose_name = _("Author")
verbose_name_plural = _("Authors")
class Book(models.Model):
name = models.CharField("Book Name", max_length=150)
<b>author</b> = models.ForeignKey(
'Author',
verbose_name=_('Author'),
on_delete=models.PROTECT
)
class Meta:
verbose_name = _("Book")
verbose_name_plural = _("Books")
def get_absolute_url(self):
return reverse('author-detail', args=(<b>self.author_id</b>,))
Затем вы можете использовать, self.author_id
, чтобы получить первичный ключ связанного Author
объекта.
Все еще немного странно, что выукажите url модели для Book
, страницы сведений о author
, а не самой книги.