TIL: to add a custom constructor to a Django model, use a custom manager method: https://docs.djangoproject.com/en/3.2/ref/models/instances/#django.db.models.Model
class BookManager(models.Manager):
def create_book(self, title):
book = self.create(title=title)
# do something with the book
return book
class Book(models.Model):
title = models.CharField(max_length=100)
objects = BookManager()
book = Book.objects.create_book("Pride and Prejudice")