我正在使用django_fsm管理模型中的状态。我的模型看起来像:
from django.db import models,
from django_fsm import FSMField, transition
class MyModel(models.Model):
STATES = (
('pending', _('Pending')),
('active', _('Active'))
)
state = FSMField(choices=STATES, default='pending', protected=True)
@transition(field=state, source='pending', target='active')
def change_state(self):
pass
我应该将self.save()添加到change_state吗?它会被称为?
答案 0 :(得分:2)
如果在不引发异常的情况下调用change_state()
成功,则状态字段将被更改,但不会写入数据库。
因此,要更改数据库,您需要显式调用obj.save()
def change_view(request, model_id):
obj = get_object__or_404(MyModel, pk=model_id)
obj.change_state()
obj.save()
return redirect('/')