,參考號,狀態狀態控制/工作流在Django
狀態是選擇草案,並證實
我想要的是當該記錄的狀態被確認,其他字段不能修改/只讀
在django中做到這一點的最佳/常用方法是什麼? 謝謝
,參考號,狀態狀態控制/工作流在Django
狀態是選擇草案,並證實
我想要的是當該記錄的狀態被確認,其他字段不能修改/只讀
在django中做到這一點的最佳/常用方法是什麼? 謝謝
我累了它與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)
希望它爲你工作得很好。
嘿,謝謝你的麻煩! :D 但我還有一件事要問。 該代碼僅用於驗證,如何將字段設置爲只讀形式? 謝謝:) – user2469629
@ user2469629永遠不要這樣做,因爲如果你想編輯一行所有元素都是可讀的,你應該檢查'可編輯'元素,然後保存它,然後再次編輯。 – Mortezaipo
真假領域(即BooleanField
)可以完成這項工作。在這裏閱讀文檔:https://docs.djangoproject.com/en/dev/ref/models/fields/#booleanfield
@mevius對不起,但還是不明白, 該文件只是說,作爲一個存儲真/假的字段 它如何改變其他領域只讀狀態改變? – user2469629
你可以使用諸如'confirmed = models.BooleanField(default = false)'之類的東西。然後你可以使用'if/else'語句來基本決定'如果確認,字段是可編輯的'。 – rnevius
@mevius我應該在哪裏放置邏輯? 在自定義模板中還是在adminmodel中? – user2469629
您可以將該字段設置爲布爾字段。 – Mortezaipo
@MortezaIpo哪個字段?爲什麼我應該把它設置爲布爾值? – user2469629
你想在django管理員或任何地方使用它? – Mortezaipo