How to Read the Database Table Name of a Model Instance in Python Django?
Last Updated :
23 Jul, 2025
Each Django Model corresponds to a table in the database. Understanding how to access the database table name associated with a model instance is important for various tasks, such as debugging, logging, or, creating dynamic queries. This article will guide us through how to read the database table name of a model instance in the Django.
Understanding Model Table Names
In Django, any model we define is automatically mapped to a table in the database. By default, the table name is composed of a combination of app label and model name, separated by an underscore. For example, if we have a model named Book in an app named Book, the default table name would be library_book.
You can also customize the table name using the Meta class of our model. Here is an example.
Python
class Book(models.Model):
title = models.CharField(max_length=200)
class Meta:
db_table = 'custom_book_table'
In this case, the table name would be custom_book_table instead of the default.
Accessing Table Name Programmatically
To access the table name of a model instance, we can use the ._meta attribute of the model. This attribute provides a wealth of information about the model, including its database table name. The db_table attribute under ._meta gives us the exact table name used in the database.
Here's how to access it:
table_name = instance._meta.db_table
Where instance is an instance of our model.
Example Code
Let’s use an example to apply the theory. We will create a simple Django model and then access its table name programmatically.
First make sure our Django project is set up.
django-admin startproject myproject
cd myproject
python manage.py startapp library
Now, define a model in models.py:
Python
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=200)
class Meta:
# Custom table name
db_table = 'custom_book_table'
Next, run the migrations to create the table:
python manage.py makemigrations
python manage.py migrate
Output:
Custom Database table name for model in DjangoNow, let's create an instance of the Book model and print the table name in the Django shell:
1. Open the Django shell:
python manage.py shell
2. Execute the following code:
Python
from library.models import Book
# Create a book instance
book_instance = Book(title="The Great Gatsby")
# Access and print the table name
table_name = book_instance._meta.db_table
print(f"The database table name for the Book model is: {table_name}")
Output:
The database table name for the Book model is: custom_book_table
This output confirms that we can successfully access the table name of a model instance programmatically.
Conclusion
In this article, we explored how to read the database table name of a model instance in Django. We discussed default naming conventions and how table names can be customized with the Meta class. Accessing the table name systematically is straightforward using the ._meta attribute of the model instance. This knowledge can be invaluable to developers when debugging or working dynamically with database tables in Django applications.
Explore
Python Fundamentals
Python Data Structures
Advanced Python
Data Science with Python
Web Development with Python
Python Practice