Почему не получается спарсить данные с сайта в модели Django?

Написал парсер, который вытаскивает с одной страницы сайта все данные о книгах и сохраняет их в модели БД. Однако не работает одна только функция.

Код (модели + парсер):

class Book(models.Model):
    """ Модель, представляющая книги """
    title = models.CharField(max_length=200)
    author = models.ForeignKey('Author', on_delete=models.SET_NULL, null=True)
    # ForeignKey использую, потому что книга может иметь только одного автора, но автор много книг
    summary = models.TextField(max_length=1000, help_text='Введите краткое описание книги')
    isbn = models.CharField('ISBN', max_length=13,
                            help_text='13 символова <a href="https://www.isbn-international.org/content/what-isbn">ISBN номера</a> книги')
    genre = models.ForeignKey('Genre', on_delete=models.SET_NULL, null=True)
    language = models.ForeignKey('Language', max_length=20, on_delete=models.SET_NULL, null=True)


class Genre(models.Model):
    """ Модель, представляющая жанры книг"""
    name = models.CharField(max_length=200, help_text="Введите жанр книги")


class Author(models.Model):
    """ Модель представляет автора """
    name = models.CharField(max_length=100)


""" Далее -- парсинг данных с книжного сайта"""


class Parsing:

    def __init__(self):
        self.page = 1
        self.html_doc = urlopen(f'https://www.litmir.me/bs?rs=5%7C1%7C0&o=20&p={str(self.page)}').read()
        self.soup = BeautifulSoup(self.html_doc)
        self.cards = self.soup.find_all('table', style='max-height:750px;')

    """ Парсинг данных (вычленение) """

    def get_author(self, card):
        return card.find('span', itemprop='author').find_all('a')[0].get_text()

    def get_genre(self, card):
        return card.find('span', itemprop='genre').find_all('a')[0].get_text()

    def get_book_title(self, card):
        return card.select('span', itemprop='name')[0].get_text()

    def get_book_summary(self, card):
        return card.find('div', class_='item_description').find('p').get_text()

    """ Загрузка данных в базу """

    def load_authors(self):
        for card in self.cards:
            Author.objects.get_or_create(name=self.get_author(card))

    def load_genres(self):
        for card in self.cards:
            Genre.objects.get_or_create(name=self.get_genre(card))

    def load_books(self):
        for card in self.cards:
            Book.objects.get_or_create(title=self.get_book_title(card),
                                       author=Author(name=self.get_author(card)),
                                       summary=self.get_book_summary(card),
                                       isbn='2883723872178',
                                       genre=Genre(name=self.get_genre(card)),
                                       language=Language(name='Русский'))

Запускаю из консоли load_genres(), load_authors() -- все работает. Когда же вызываю load_books(), вылезает ошибка:

ValueError: save() prohibited to prevent data loss due to unsaved related object 'author'.

Ответы (1 шт):

Автор решения: nomnoms12

Код author=Author(name=self.get_author(card)) создаст новый объект Author, который не будет сохранён, потому что для него Вы не вызываете метод save.

Предполагаю, что Вы хотели получить уже существующий объект. Сделать это можно следующим образом:

author=Author.objects.get(name=self.get_author(card))
→ Ссылка