0
是否可以根據對象狀態(模型中和管理員 - 如果可能)更改表單字段的必需屬性?例如:我的數據庫模型包含status
字段,並且根據當前對象狀態,某些其他字段在某些狀態值中應該是必需的,而在其他字段中是可選的。如何根據對象狀態改變表單域的需求?
是否可以根據對象狀態(模型中和管理員 - 如果可能)更改表單字段的必需屬性?例如:我的數據庫模型包含status
字段,並且根據當前對象狀態,某些其他字段在某些狀態值中應該是必需的,而在其他字段中是可選的。如何根據對象狀態改變表單域的需求?
更好的是,你可以在Model
級別上做到這一點。
class MyModel(models.Model):
.... some fields here...
def clean(self):
from django.core.exceptions import ValidationError
# Don't allow draft entries to have a pub_date.
if self.status == 'draft' and self.pub_date is not None:
raise ValidationError('Draft entries may not have a publication date.')
# Set the pub_date for published items if it hasn't been set already.
if self.status == 'published' and self.pub_date is None:
self.pub_date = datetime.date.today()
否則,如果這不是特別依賴於數據庫模型,您可以 同樣定義模型形式的clean
方法。
見here
更新:我剛剛得到了required
屬性你提到。
沒有必要動態改變所需的屬性。 首先,RDBMS不支持這一點。有一個約束 或沒有。因此,由於這是業務邏輯而不是數據庫邏輯,因此您應該在這些字段上填寫null=True
(必填= False,表單域),並按照上面的說明處理它們 。
這正是我所錯過的,我已經在模型 – canni 2013-04-07 15:10:27
@canni中有'null = True'很高興我幫了忙。 – rantanplan 2013-04-07 15:12:46