问题描述
我下面有一个a.py djnago有限状态机程序:
from django.db import models
from django_fsm import transition,FSMIntegerField
from django_fsm import FSMField,transition
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE","mysite.settings")
import django
django.setup()
from django.core.management import call_command
class Order(models.Model):
STATUS_GO = 0
STATUS_COME =1
STATUS_CHOICES = (
(STATUS_GO,'GO'),(STATUS_COME,'come')
)
product = models.CharField(max_length=200)
status = FSMIntegerField(choices=STATUS_CHOICES,default=STATUS_GO,protected=True)
@transition(field=status,source=.
[STATUS_GO],target=STATUS_COME)
def walk(self):
print("Target moved")
我将在程序上方运行: 按F5。
>>> State= order()
>>> State.walk # input
>>> Target moved # output
我希望有机会理解,djnago / python是否提供了从终端窗口中插入状态(STATUS_HOLD,STATUS_JUMP)的机会,除了已经可用。
以便这些新状态在程序中定位。任何可能性。谢谢。
解决方法
之前:
@transition(field=status,source=[STATUS_GO],target=STATUS_COME)
现在:
in=input("source")
out =input("Target)
@transition(field=status,source=in,target=out)
类似地,对于Status_choice,从用户那里获取输入。
这帮助我获得了动态输入