0
0
Djangoframework~5 mins

Model Meta class options in Django

Choose your learning style9 modes available
Introduction

The Model Meta class lets you set extra rules and details for your Django model. It helps control how your data behaves and looks without changing the main model code.

You want to change the database table name for a model.
You want to set the default order of records when you get them.
You want to add human-friendly names for your model in the admin panel.
You want to make a model read-only or prevent it from being created in the admin.
You want to add unique constraints across multiple fields.
Syntax
Django
class YourModel(models.Model):
    field = models.CharField(max_length=100)

    class Meta:
        db_table = 'custom_table_name'
        ordering = ['field']
        verbose_name = 'Friendly Name'
        verbose_name_plural = 'Friendly Names'
        unique_together = [['field1', 'field2']]

The Meta class is inside your model class.

Each option controls a different behavior or setting for the model.

Examples
This sets the default order of books by their title when you get them from the database.
Django
class Book(models.Model):
    title = models.CharField(max_length=200)

    class Meta:
        ordering = ['title']
This changes how the model name shows up in the admin panel and other places.
Django
class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)

    class Meta:
        verbose_name = 'Person'
        verbose_name_plural = 'People'
This makes sure the combination of SKU and name is unique in the database.
Django
class Product(models.Model):
    sku = models.CharField(max_length=20)
    name = models.CharField(max_length=100)

    class Meta:
        unique_together = [['sku', 'name']]
Sample Program

This example shows how to customize the database table name, default ordering, and display names for a model using the Meta class.

Django
from django.db import models

class Article(models.Model):
    headline = models.CharField(max_length=255)
    pub_date = models.DateField()

    class Meta:
        db_table = 'news_article'
        ordering = ['-pub_date']
        verbose_name = 'News Article'
        verbose_name_plural = 'News Articles'

# When you query Article.objects.all(), it will order by pub_date descending.
# The database table will be named 'news_article' instead of the default.
# The admin panel will show 'News Article' and 'News Articles' as names.
OutputSuccess
Important Notes

Not all Meta options affect the database; some only change how Django shows the model.

Use unique_together to enforce uniqueness across multiple fields.

Ordering can use '-' before a field name to sort descending.

Summary

The Meta class customizes model behavior without changing fields.

Common options include db_table, ordering, and verbose_name.

It helps make your models fit your app’s needs better.