How to be a Django Form Mixologist
You’ve undoubtedly come across the Mixin pattern in Python: it allows for easy inheritance and a DRY method for code. However, the clean method makes things a bit tricky, especially when dealing with cleaning fields that depend on each other. This guide will show you how to properly implement a Django form with mixin classes.
5 min readDec 4, 2023
Why Mixins?
Mixins are great for mixing multiple classes together. For example, consider the following example:
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
raise NotImplementedError("Subclasses must implement this method")
class MammalMixin:
def give_birth(self):
return f"{self.name} gives birth."
class ReptileMixin:
def lay_eggs(self):
return f"{self.name} lays eggs."
class Lion(Animal, MammalMixin):
pass
lion = Lion("Simba")
try:
print(lion.speak()) # Raises NotImplementedError because it hasn't been implemented yet
except Exception as e:
print(e)
print(lion.give_birth()) # Output: Simba gives birth.
try:
print(lion.lay_eggs()) # Output: Simba cannot lay eggs.
except Exception as e…