Django中的状态控制/工作流程

时间:2014-05-06 14:45:55

标签: python django

我有一个带有几个字段的对象,例如订单行,参考号,状态

州是选择草案并确认

我想要的是当记录状态得到确认后,其他字段无法修改/只读

在django中做到这一点的最佳/常用方法是什么? 感谢

2 个答案:

答案 0 :(得分:0)

真/假字段(即BooleanField)可以完成这项工作。阅读此处的文档:https://docs.djangoproject.com/en/dev/ref/models/fields/#booleanfield

答案 1 :(得分:0)

我厌倦了3个示例字段。

我创建了一个包含3个字段的模型:

class New(models.Model):
    title = models.CharField(max_length=100,unique=True)
    body = models.TextField()
    editable = models.BooleanField(default=True)

    def __unicode__(self):
        return self.title

我的forms.py代码是:

class MyNewForm(forms.ModelForm):
    class Meta:
        model = New

    def clean(self):
        cleaned_data = super(MyNewForm,self).clean()
        title = cleaned_data.get('title')
        body = cleaned_data.get('body')
        editable = cleaned_data.get('editable')

        if self.instance.pk:
            try:
                row = New.objects.get(id=self.instance.pk)
            except New.DoesNotExist:
                raise forms.ValidationError('Record not found')

            if not row.editable and not editable:
                raise forms.ValidationError('This record is not editable')

        return cleaned_data

我的admin.py代码是:

from news.models import New
from news.forms import MyNewForm
class MyNew(admin.ModelAdmin):
    form = MyNewForm

admin.site.register(New,MyNew)

希望它适合你。