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