gpt4 book ai didi

django - Django 中状态管理的最佳实践

转载 作者:行者123 更新时间:2023-12-05 07:03:54 25 4
gpt4 key购买 nike

class MyModel(models.Model):
STATE1 = 1
STATE2 = 2
STATE3 = 3
STATE_CHOICES = (
(STATE1,"state1"),
(STATE2,"state2"),
(STATE3,"state3"),
)
.
.
state = models.PositiveSmallIntegerField(choices=STATE_CHOICES, default=1)

def save(self):
pass

def method1(self):
pass

def method2(self):
pass

我想做的事; if state1 to state2 trigger method1, if state2 to state1 trigger method2, state2 to state3 trigger method3 等等。我如何在不使用很多“if语句”的情况下进行编码?我想编写干净的代码。

感谢您的帮助。

最佳答案

你可以根据你的状态和它的功能制作一个功能字典。然后你可以在保存方法中通过这个字典调用函数。看起来像这样;

class MyModel(models.Model):
STATE1 = 1
STATE2 = 2
STATE3 = 3
STATE_CHOICES = (
(STATE1,"state1"),
(STATE2,"state2"),
(STATE3,"state3"),
)
fn_dict = {
"state1_state2" : state1,
"state2_state2" : state2,
"state3_state1" : state3,
}

.
.
state = models.PositiveSmallIntegerField(choices=STATE_CHOICES, default=1)

def save(self):
pre_saved_model = MyModel.objects.get(id=self.id)
self.fn_dict[pre_saved_model + "_" + self.state]()

def state1(self):
pass

def state1(self):
pass

关于django - Django 中状态管理的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63076729/

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