我想知道如何使用DjangoField.choices
作为策略选择器。你知道吗
下面是一个超级简单的例子来说明我想要实现的目标:
class AbstractStrategy:
description = str()
def do_something(self):
raise NotImplemented
def __init__(self, description):
self.symbol = description
def __str__(self):
return str(self.description)
class ABCStrategy(AbstractStrategy):
def do_something(self):
print('doing something abc way')
return
class XYZStrategy(AbstractStrategy):
def do_something(self):
print('doing something xyz way')
return
ABC = ABCStrategy('ABC')
XYZ = XYZStrategy('XYZ')
STRATEGIES = (
(ABC, 'ABC'),
(XYZ, 'XYZ'),
)
然后STRATEGIES
被用作choices=STRATEGIES
。在后面的实现中,理论上我应该能够直接用strategy_field.do_something
从Model
的对象调用strategy,但不幸的是,这个方法现在不起作用。问题是在实现中,还是通常不可能以这种方式使用选项?你知道吗
选择的值将保存到数据库中。对象太复杂,无法序列化为字符串。你知道吗
解决方案是将此添加到模型中:
然后你可以做
instance.strategy_id = 'ABC'
,结果instance.strategy
就是ABCStrategy
相关问题 更多 >
编程相关推荐