gpt4 book ai didi

python - 如何在 Django 中组合/嵌套枚举字段?

转载 作者:行者123 更新时间:2023-12-01 04:51:18 25 4
gpt4 key购买 nike

Django-EnumFields允许您在 Django 中组合 Enum 字段(线索就在标题中)。

你能把这些结合起来吗?

这是一个使用 docs 的示例:

from django.db import models
from django_enumfield import enum

class BeerStyle(enum.Enum):
LAGER = 0
STOUT = 1
WEISSBIER = 2

class SoftDrinkStyle(enum.Enum):
COKE = 3
LEMONADE = 4

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

我不知道用什么来代替 ????,或者是否有更好的方法让这个嵌套/组合在 Django 中发挥作用。我主要问的是因为我想要枚举行为,能够探测不同类型,例如在保存方法中,检查用户年龄(如果饮料是)或输入Beer

这可能吗?玩了一会儿我不明白如何。

最佳答案

了解了 Python 枚举的工作原理后,这看起来是模拟“子类”的最佳行为

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)

然后使用DrinkStyle.COKE.type返回类型。

关于python - 如何在 Django 中组合/嵌套枚举字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28399874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com