Can't delete a register in Admin site

Hello all. Im totally beginner and im following a tutorial to learn how to use Django.

In a model class called “Book Instance”, there is a ForeignKey field that reference to the model “Book”.

Created a register of model “Book” and “Book instance” in Admin site, I deleted that register of “Book” and after that i couldnt delete the register of “Book Instance”. Trying to do it or even acess the register “Book Instance”, im directed to a AtributteError page.

Can someone help me how to fix it? How to delete the register definitively?

In below, the register i cant delete is seen as " - "

Can you be more accurate with what is happening and what you’ve done? If you’re talking about changes that you’ve made to either or both of your models.py and admin.py files, please post those files here. Also post the complete traceback you’re getting.

When posting code, enclose it between lines of three backtick - ` characters. This means you’ll have a line of ```, then your code, and then another line of ```.

Sure. In below is the Book and BookInstance model.py.

class Book(models.Model):
    """Model representing a book (but not a specific copy of a book)."""
    title = models.CharField(max_length=200)

    # Foreign Key used because book can only have one author, but authors can have multiple books
    # Author as a string rather than object because it hasn't been declared yet in the file
    author = models.ForeignKey('Author', on_delete=models.SET_NULL, null=True)

    summary = models.TextField(max_length=1000, help_text='Enter a brief description of the book')
    isbn = models.CharField('ISBN', max_length=13, help_text='13 Character <a href="https://www.isbn-international.org/content/what-isbn">ISBN number</a>')

    # ManyToManyField used because genre can contain many books. Books can cover many genres.
    # Genre class has already been defined so we can specify the object above.
    genre = models.ManyToManyField('Genre', help_text='Select a genre for this book')
    language = models.ForeignKey('Language', on_delete=models.SET_NULL, null=True)

    def __str__(self):
        """String for representing the Model object."""
        return self.title

    def get_absolute_url(self):
        """Returns the url to access a detail record for this book."""
        return reverse('book-detail', args=[str(self.id)])

    def display_genre(self):
        """Create a string for the Genre. This is required to display genre in Admin."""
        return ', '.join(genre.name for genre in self.genre.all()[:3])

    display_genre.short_description = 'Genre'
class BookInstance(models.Model):
    """Model representing a specific copy of a book (i.e. that can be borrowed from the library)."""
    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.SET_NULL, 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):
        """String for representing the Model object."""
        return f'{self.id} ({self.book.title})'

In admin site i created a register of Book “test” and a register of BookInstance whose book field is that last Book “test”.

After that, i deleted that register of Book “test” and then, i cant remove or access the BookInstance.

In below is what appears when i try to acess the BookInstance (seen as " - ")

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/admin/catalog/bookinstance/e4338198-f49a-4b94-b1bc-213fd61cca5d/change/

Django Version: 3.2.3
Python Version: 3.9.1
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'catalog.apps.CatalogConfig']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback (most recent call last):
  File "C:\Users\fabri\Envs\my_django_environment\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "C:\Users\fabri\Envs\my_django_environment\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\fabri\Envs\my_django_environment\lib\site-packages\django\contrib\admin\options.py", line 616, in wrapper
    return self.admin_site.admin_view(view)(*args, **kwargs)
  File "C:\Users\fabri\Envs\my_django_environment\lib\site-packages\django\utils\decorators.py", line 130, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "C:\Users\fabri\Envs\my_django_environment\lib\site-packages\django\views\decorators\cache.py", line 44, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "C:\Users\fabri\Envs\my_django_environment\lib\site-packages\django\contrib\admin\sites.py", line 232, in inner
    return view(request, *args, **kwargs)
  File "C:\Users\fabri\Envs\my_django_environment\lib\site-packages\django\contrib\admin\options.py", line 1660, in change_view
    return self.changeform_view(request, object_id, form_url, extra_context)
  File "C:\Users\fabri\Envs\my_django_environment\lib\site-packages\django\utils\decorators.py", line 43, in _wrapper
    return bound_method(*args, **kwargs)
  File "C:\Users\fabri\Envs\my_django_environment\lib\site-packages\django\utils\decorators.py", line 130, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "C:\Users\fabri\Envs\my_django_environment\lib\site-packages\django\contrib\admin\options.py", line 1540, in changeform_view
    return self._changeform_view(request, object_id, form_url, extra_context)
  File "C:\Users\fabri\Envs\my_django_environment\lib\site-packages\django\contrib\admin\options.py", line 1632, in _changeform_view
    'subtitle': str(obj) if obj else None,
  File "C:\Users\fabri\Desktop\django\locallibrary\catalog\models.py", line 79, in __str__
    return f'{self.id} ({self.book.title})'

Exception Type: AttributeError at /admin/catalog/bookinstance/e4338198-f49a-4b94-b1bc-213fd61cca5d/change/
Exception Value: 'NoneType' object has no attribute 'title'