Django: FieldError: Невозможно преобразовать ключевое слово 'name' в поле. Варианты: Имя, id

Только начинаю работать с Django. Я следовал этому руководству:Django Tutorial Part 3: Using models, и я столкнулся с этой проблемой на связанном шаге

  • python3 manage.py makemigrations
  • python3 manage.py migrate

После выполнения второй команды появляется ошибка.

Полное сообщение об ошибке:

Вот мой код

models.py:

from django.db import models
from django.urls import reverse
from django.db.models import UniqueConstraint
from django.db.models.functions import Lower
import uuid

class Genre(models.Model):
    name = models.CharField(max_length=200, unique=True, help_text="Enter a book genre")

    def get_absolute_url(self):
        return reverse('genre-detail', args=[str(self.id)])

    def __str__(self):
        return self.name

    class Meta:
        constraints = [
            UniqueConstraint(
                Lower('name'),
                name='genre_name_case_insensitive_unique',
                violation_error_message = "Genre already exists (case insensitive match)"
            ),
        ]

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.ForeignKey('Author', on_delete=models.RESTRICT, null=True)
    summary = models.TextField(max_length=1000, help_text="Brief the story of the book")
    isbn = models.CharField(max_length=13, unique=True, help_text='13 Character <a href="https://www.isbn-international.org/content/what-isbn''">ISBN number</a>')
    genre = models.ManyToManyField(Genre, help_text="Genres for the book")
    def __str__(self):
        return self.title
    def get_absolute_url(self):
        return reverse('book-detail', args=[str(self.id)])

class BookInstance(models.Model):
    id = models.UUIDField(primary_key=True, default= uuid.uuid4, help_text="Unique ID for this particular book across whole library")
    book = models.ForeignKey('Book', on_delete=models.RESTRICT, null=True)
    imprint = models.CharField(max_length=200)
    due_back = models.DateField(null=True, blank=True)

    LOAN_STATUS = (
        ('m', 'Maintenance'),
        ('o', 'On loan'),
        ('a', 'Available'),
        ('r', 'Reserved'),
    )

    status = models.CharField(
        max_length=1,
        choices=LOAN_STATUS,
        blank=True,
        default='m',
        help_text='Book availability',
    )

    class Meta:
        ordering = ['due_back']

    def __str__(self):
        return f'{self.id}({self.book.title})'

class Author(models.Model):
    """Model representing an author."""
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    date_of_birth = models.DateField(null=True, blank=True)
    date_of_death = models.DateField('Died', null=True, blank=True)

    class Meta:
        ordering = ['last_name', 'first_name']

    def get_absolute_url(self):
        """Returns the URL to access a particular author instance."""
        return reverse('author-detail', args=[str(self.id)])

    def __str__(self):
        """String for representing the Model object."""
        return f'{self.last_name}, {self.first_name}'

admin.py:

from django.contrib import admin

from .models import Author, Genre, Book, BookInstance#, Language

admin.site.register(Book)
admin.site.register(Author)
admin.site.register(Genre)
admin.site.register(BookInstance)
# admin.site.register(Language)

миграция каталога 0001_initial:

Я проверил некоторые похожие проблемы, но не нашел тех решений, которые очень связаны с моей проблемой.

В настоящее время в модели Genre нет поля Name, однако есть поле name. catalog migration 0001_initial указывает на то, что так было не всегда и в какой-то момент изменилось.

migrations.CreateModel(
    name='Genre',
    fields=[
        ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
        ('Name', models.CharField(help_text='Enter a book genre', max_length=200, unique=True)),
    ],     ^
),         |- - Added initially

Самое простое решение - это катастрофический сброс и перезапуск базы данных. Конечно, это непрофессионально, но если спасать/бороться не за что, зачем напрягаться?

Есть тысяча и одно решение, над некоторыми из которых я буду работать и вернусь с тестовыми решениями.

Вернуться на верх