Set Default Value in Model Field

A snippet showing how to define default values for Django model fields.


# models.py

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=8, decimal_places=2, default=0.00)
    in_stock = models.BooleanField(default=True)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f"{self.name} - ${self.price}"
  

# Django Shell

>>> from shop.models import Product
>>> product = Product.objects.create(name='Laptop')
>>> product.price
Decimal('0.00')
>>> product.in_stock
True
  

# Using functions for defaults

import uuid
from django.db import models

def generate_sku():
    return str(uuid.uuid4())[:8]

class Item(models.Model):
    name = models.CharField(max_length=100)
    sku = models.CharField(max_length=20, default=generate_sku)
  
Explanation:
  • The default argument sets a value automatically when a field is not provided.
  • Defaults can be constants (like True or 0.00) or callable functions.
  • Using functions for defaults ensures unique values (like SKUs or UUIDs) for each object.
  • auto_now_add is useful for timestamp defaults, setting the date when the record is created.
  • Category Models & ORM
  • Total Views 664
  • Last Modified 16 September, 2025
  • Tags #models #fields #defaults #orm
Never miss a story on Django.wiki

Subscribe for fresh tutorials, snippets, and updates.

By subscribing you agree to our Privacy Policy.