[Answered ]-How can I combine/nest EnumFields in Django?

2👍

✅

Having looked over how Python Enums work, this looks like the best behaviour to mock up ‘subclasses’

from django.db import models
from django_enumfield import enum

class DrinkStyle(enum.Enum):
    LAGER = (0, 'Beer')
    STOUT = (1, 'Beer')
    WEISSBIER = (2, 'Beer')
    COKE = (3, 'SoftDrink')
    LEMONADE = (4, 'SoftDrink')

    def __init__(self, id, drink_type):
        self.id = id    
        self.type = drink_type

    @property
    def type(self):
        return self.drink_type

class Drink(models.Model):
    style = enum.EnumField(DrinkStyle, default=DrinkStyle.LAGER)

Then use DrinkStyle.COKE.type to return the type.

Leave a comment